Whamcloud - gitweb
LU-4629 utils: fix array overflow 35/10135/3
authorDmitry Eremin <dmitry.eremin@intel.com>
Mon, 28 Apr 2014 19:57:36 +0000 (23:57 +0400)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 14 May 2014 05:31:33 +0000 (05:31 +0000)
Array 'argv' of size 512 may use index value(s) 512.

Signed-off-by: Dmitry Eremin <dmitry.eremin@intel.com>
Change-Id: I808b6f52f0e8b548978290dd08f1f5fc3ce929a1
Reviewed-on: http://review.whamcloud.com/10135
Tested-by: Jenkins
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
libcfs/libcfs/util/parser.c

index f395fa3..b40250b 100644 (file)
@@ -59,21 +59,17 @@ static char * skiptowhitespace(char * s)
 
 static int line2args(char *line, char **argv, int maxargs)
 {
 
 static int line2args(char *line, char **argv, int maxargs)
 {
-        char *arg;
-        int i = 0;
+       char *arg;
+       int i = 0;
 
 
-        arg = strtok(line, " \t");
-        if ( arg ) {
-                argv[i] = arg;
-                i++;
-        } else
-                return 0;
+       arg = strtok(line, " \t");
+       if (arg == NULL || maxargs < 1)
+               return 0;
 
 
-        while( (arg = strtok(NULL, " \t")) && (i <= maxargs)) {
-                argv[i] = arg;
-                i++;
-        }
-        return i;
+       argv[i++] = arg;
+       while ((arg = strtok(NULL, " \t")) != NULL && i < maxargs)
+               argv[i++] = arg;
+       return i;
 }
 
 /* find a command -- return it if unique otherwise print alternatives */
 }
 
 /* find a command -- return it if unique otherwise print alternatives */