fixed bug that core dumped when bad arguments were given
[unix-history] / 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++;