=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cdio/cdio.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- src/usr.bin/cdio/cdio.c 2003/02/18 09:42:33 1.28 +++ src/usr.bin/cdio/cdio.c 2003/04/06 20:50:05 1.29 @@ -1,4 +1,4 @@ -/* $OpenBSD: cdio.c,v 1.28 2003/02/18 09:42:33 jmc Exp $ */ +/* $OpenBSD: cdio.c,v 1.29 2003/04/06 20:50:05 krw Exp $ */ /* Copyright (c) 1995 Serge V. Vakulenko * All rights reserved. @@ -263,18 +263,14 @@ int len; for (p=buf; argc-->0; ++argv) { - len = strlen(*argv); + len = snprintf(p, buf + sizeof buf - p, + "%s%s", (p > buf) ? " " : "", *argv); - if (p + len >= buf + sizeof (buf) - 1) - usage(); + if (len >= buf + sizeof buf - p) + errx(1, "argument list too long."); - if (p > buf) - *p++ = ' '; - - strcpy(p, *argv); /* ok */ p += len; } - *p = 0; arg = parse(buf, &cmd); return (run(cmd, arg)); }