* main.c (makeargv): Report an error if parsed arguments won't fit in margv
authorKen Raeburn <raeburn@mit.edu>
Sat, 9 Nov 2002 01:35:21 +0000 (01:35 +0000)
committerKen Raeburn <raeburn@mit.edu>
Sat, 9 Nov 2002 01:35:21 +0000 (01:35 +0000)
array.
* ftp_var.h (line, argbuf): Extend to 500 bytes.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14983 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/gssftp/ftp/ChangeLog
src/appl/gssftp/ftp/ftp_var.h
src/appl/gssftp/ftp/main.c

index 1b78353208f4ac6c9ec8d11c65a3d3f854f30dfd..385036d2b5b172941364f4a9dafe0f84bcb5d278 100644 (file)
@@ -1,3 +1,9 @@
+2002-11-08  Ken Raeburn  <raeburn@mit.edu>
+
+       * main.c (makeargv): Report an error if parsed arguments won't fit
+       in margv array.
+       * ftp_var.h (line, argbuf): Extend to 500 bytes.
+
 2002-08-29  Ken Raeburn  <raeburn@mit.edu>
 
        * Makefile.in: Revert $(S)=>/ change, for Windows support.
index 79928b3f346240e66bad54b8dfa520bc4c6d6c71..4448448aa3b26a891515148dfd9e1ea0bb4f65e9 100644 (file)
@@ -131,9 +131,9 @@ extern struct       servent *sp;    /* service spec for tcp/ftp */
 #include <setjmp.h>
 extern jmp_buf toplevel;       /* non-local goto stuff for cmd scanner */
 
-extern char    line[200];      /* input line buffer */
+extern char    line[500];      /* input line buffer */
 extern char    *stringbase;    /* current scan point in line buffer */
-extern char    argbuf[200];    /* argument storage buffer */
+extern char    argbuf[500];    /* argument storage buffer */
 extern char    *argbase;       /* current storage point in arg buffer */
 extern int     margc;          /* count of arguments on input line */
 extern char    *margv[20];     /* args parsed from input line */
index 60171da55c46192a7102babfaf9ce64feaa6a081..8e4cfe5efd4e63b08c5ff9159c7ea1dfa3a74d6b 100644 (file)
@@ -430,8 +430,15 @@ void makeargv()
        stringbase = line;              /* scan from first of buffer */
        argbase = argbuf;               /* store from first of buffer */
        slrflag = 0;
-       while ((*argp++ = slurpstring()))
+       while ((*argp++ = slurpstring())) {
                margc++;
+               if (margc == sizeof(margv)/sizeof(margv[0])) {
+                       printf("sorry, too many arguments in input line\n");
+                       margc = 0;
+                       margv[0] = 0;
+                       return;
+               }
+       }
 }
 
 /*