diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1998-09-18 18:48:12 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1998-09-18 18:48:12 +0000 |
commit | 11221014c511bf213cb2110c7e5ea1b6d5f710ac (patch) | |
tree | 2a2236e432cb8d4b4bb796c679f85063343465c1 /sbin/restore | |
parent | 7bf77c57bed8511e10374f722400e781de32585c (diff) |
buf oflows
Diffstat (limited to 'sbin/restore')
-rw-r--r-- | sbin/restore/interactive.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/sbin/restore/interactive.c b/sbin/restore/interactive.c index b0050e5185d..0f3b90499aa 100644 --- a/sbin/restore/interactive.c +++ b/sbin/restore/interactive.c @@ -1,4 +1,4 @@ -/* $OpenBSD: interactive.c,v 1.7 1998/06/23 22:40:31 millert Exp $ */ +/* $OpenBSD: interactive.c,v 1.8 1998/09/18 18:48:11 deraadt Exp $ */ /* $NetBSD: interactive.c,v 1.10 1997/03/19 08:42:52 lukem Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)interactive.c 8.3 (Berkeley) 9/13/94"; #else -static char rcsid[] = "$OpenBSD: interactive.c,v 1.7 1998/06/23 22:40:31 millert Exp $"; +static char rcsid[] = "$OpenBSD: interactive.c,v 1.8 1998/09/18 18:48:11 deraadt Exp $"; #endif #endif /* not lint */ @@ -157,7 +157,7 @@ loop: fprintf(stderr, "%s: not a directory\n", name); break; } - (void)strcpy(curdir, name); + (void)strlcpy(curdir, name, sizeof curdir); break; /* * Delete elements from the extraction list. @@ -348,7 +348,7 @@ getcmd(curdir, cmd, name, ap) * If no argument, use curdir as the default. */ if (*cp == '\0') { - (void)strcpy(name, curdir); + (void)strlcpy(name, curdir, MAXPATHLEN); return; } nextarg = cp; @@ -371,9 +371,7 @@ getnext: * For relative pathnames, prepend the current directory to * it then canonicalize and return it. */ - (void)strcpy(output, curdir); - (void)strcat(output, "/"); - (void)strcat(output, rawname); + snprintf(output, sizeof(output), "%s/%s", curdir, rawname); canon(output, name); } if (glob(name, GLOB_ALTDIRFUNC | GLOB_NOESCAPE, NULL, &ap->glob) < 0) @@ -384,7 +382,8 @@ getnext: ap->argcnt = ap->glob.gl_pathc; retnext: - strcpy(name, ap->glob.gl_pathv[ap->glob.gl_pathc - ap->argcnt]); + strlcpy(name, ap->glob.gl_pathv[ap->glob.gl_pathc - ap->argcnt], + MAXPATHLEN); if (--ap->argcnt == 0) { ap->freeglob = 0; globfree(&ap->glob); @@ -457,7 +456,7 @@ canon(rawname, canonname) (void)strcpy(canonname, "."); else (void)strcpy(canonname, "./"); - (void)strcat(canonname, rawname); + (void)strlcat(canonname, rawname, MAXPATHLEN); /* * Eliminate multiple and trailing '/'s */ |