From 2e42144ea7d714db710aab48232c1769cc1cd012 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Sat, 25 Jan 1997 05:27:17 +0000 Subject: [PATCH] Apply patch from pr2536, after testing locally. Fixes: PR2446 and PR2536 Submitted by: Flemming Jacobsen 2.2 Candidate. --- sbin/restore/interactive.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sbin/restore/interactive.c b/sbin/restore/interactive.c index d2158e42ecbc..9e8b9ae9e44c 100644 --- a/sbin/restore/interactive.c +++ b/sbin/restore/interactive.c @@ -82,7 +82,7 @@ struct arglist { static char *copynext __P((char *, char *)); static int fcmp __P((const void *, const void *)); static void formatf __P((struct afile *, int)); -static void getcmd __P((char *, char *, char *, struct arglist *)); +static void getcmd __P((char *, char *, char *, int, struct arglist *)); struct dirent *glob_readdir __P((RST_DIR *dirp)); static int glob_stat __P((const char *, struct stat *)); static void mkentry __P((struct direct *, struct afile *)); @@ -121,7 +121,7 @@ runcmdshell() volno = 0; } runshell = 1; - getcmd(curdir, cmd, name, &arglist); + getcmd(curdir, cmd, name, sizeof(name), &arglist); switch (cmd[0]) { /* * Add elements to the extraction list. @@ -300,9 +300,10 @@ runcmdshell() * eliminate any embedded ".." components. */ static void -getcmd(curdir, cmd, name, ap) +getcmd(curdir, cmd, name, size, ap) char *curdir, *cmd, *name; struct arglist *ap; + int size; { register char *cp; static char input[BUFSIZ]; @@ -357,7 +358,7 @@ getcmd(curdir, cmd, name, ap) * If it is an absolute pathname, canonicalize it and return it. */ if (rawname[0] == '/') { - canon(rawname, name, sizeof(name)); + canon(rawname, name, size); } else { /* * For relative pathnames, prepend the current directory to @@ -366,7 +367,7 @@ getcmd(curdir, cmd, name, ap) (void) strcpy(output, curdir); (void) strcat(output, "/"); (void) strcat(output, rawname); - canon(output, name, sizeof(name)); + canon(output, name, size); } if (glob(name, GLOB_ALTDIRFUNC, NULL, &ap->glob) < 0) fprintf(stderr, "%s: out of memory\n", ap->cmd);