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