fixed bug that core dumped when bad arguments were given
authorMark Horton <mark@ucbvax.Berkeley.EDU>
Sat, 8 Nov 1980 04:06:25 +0000 (20:06 -0800)
committerMark Horton <mark@ucbvax.Berkeley.EDU>
Sat, 8 Nov 1980 04:06:25 +0000 (20:06 -0800)
SCCS-vsn: usr.bin/wc/wc.c 4.2

usr/src/usr.bin/wc/wc.c

index 30d6b81..b947edb 100644 (file)
@@ -1,4 +1,4 @@
-static char *sccsid = "@(#)wc.c        4.1 (Berkeley) %G%";
+static char *sccsid = "@(#)wc.c        4.2 (Berkeley) %G%";
 /* wc line and word count */
 
 #include <stdio.h>
 /* wc line and word count */
 
 #include <stdio.h>
@@ -25,7 +25,11 @@ char **argv;
                        wd = argv[1]+1;
                        break;
                case 's':
                        wd = argv[1]+1;
                        break;
                case 's':
+                       if (argc == 2)
+                               goto usage;
                        lpp = atoi(argv[1]+2);
                        lpp = atoi(argv[1]+2);
+                       if (lpp <= 0)
+                               goto usage;
                        break;
                case 'v':
                        verbose++;
                        break;
                case 'v':
                        verbose++;
@@ -35,12 +39,20 @@ char **argv;
                        uucp++;
                        break;
                case 'b':
                        uucp++;
                        break;
                case 'b':
+                       if (argc == 2)
+                               goto usage;
                        baud = atoi(argv[1]+2);
                        if (baud == 110)
                                cps = 10;
                        else
                                cps = baud / 10;
                        baud = atoi(argv[1]+2);
                        if (baud == 110)
                                cps = 10;
                        else
                                cps = baud / 10;
+                       if (cps <= 0)
+                               goto usage;
                        break;
                        break;
+               default:
+               usage:
+                       fprintf(stderr, "Usage: wc [-lwcpt] [-v] [-u] [-s pagesize] [-b baudrate]\n");
+                       exit(1);
                }
                argc--;
                argv++;
                }
                argc--;
                argv++;