From: Dmitry Eremin Date: Mon, 28 Apr 2014 19:57:36 +0000 (+0400) Subject: LU-4629 utils: fix array overflow X-Git-Tag: 2.5.59~9 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=4c3b2c8b2b4e0d01d6e5c5531363110a2275d6a1;hp=b7f1952882e9e133b43acb22d010767c664539b9 LU-4629 utils: fix array overflow Array 'argv' of size 512 may use index value(s) 512. Signed-off-by: Dmitry Eremin Change-Id: I808b6f52f0e8b548978290dd08f1f5fc3ce929a1 Reviewed-on: http://review.whamcloud.com/10135 Tested-by: Jenkins Reviewed-by: John L. Hammond Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- diff --git a/libcfs/libcfs/util/parser.c b/libcfs/libcfs/util/parser.c index f395fa3..b40250ba 100644 --- a/libcfs/libcfs/util/parser.c +++ b/libcfs/libcfs/util/parser.c @@ -59,21 +59,17 @@ static char * skiptowhitespace(char * s) 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 */