force glob failure to result in original string being used (from
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Wed, 5 Jun 1985 12:46:37 +0000 (04:46 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Wed, 5 Jun 1985 12:46:37 +0000 (04:46 -0800)
bug report -- sorry whoever you are)

SCCS-vsn: libexec/ftpd/ftpd.c 4.35

usr/src/libexec/ftpd/ftpd.c

index c8496e1..f5c99b1 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)ftpd.c     4.34 (Berkeley) %G%";
+static char sccsid[] = "@(#)ftpd.c     4.35 (Berkeley) %G%";
 #endif
 
 /*
 #endif
 
 /*
@@ -783,14 +783,19 @@ popen(cmd, mode)
        /* glob each piece */
        for (gac = ac = 1; av[ac] != NULL; ac++) {
                char **pop;
        /* glob each piece */
        for (gac = ac = 1; av[ac] != NULL; ac++) {
                char **pop;
-               extern char **glob();
+               extern char **glob(), **copyblk();
 
                pop = glob(av[ac]);
 
                pop = glob(av[ac]);
-               if (pop) {
-                       av[ac] = (char *)pop;           /* save to free later */
-                       while (*pop && gac < 512)
-                               gav[gac++] = *pop++;
+               if (pop == (char **)NULL) {     /* globbing failed */
+                       char *vv[2];
+
+                       vv[0] = av[ac];
+                       vv[1] = 0;
+                       pop = copyblk(vv);
                }
                }
+               av[ac] = (char *)pop;           /* save to free later */
+               while (*pop && gac < 512)
+                       gav[gac++] = *pop++;
        }
        gav[gac] = (char *)0;
        myside = tst(p[WTR], p[RDR]);
        }
        gav[gac] = (char *)0;
        myside = tst(p[WTR], p[RDR]);