Michael Tokarev, mjt at tls dot msk dot ru writes:
authorEric Andersen <andersen@codepoet.org>
Tue, 6 Apr 2004 12:06:03 +0000 (12:06 -0000)
committerEric Andersen <andersen@codepoet.org>
Tue, 6 Apr 2004 12:06:03 +0000 (12:06 -0000)
Fix parsing of all tag-value pairs (in modules.conf in particular).
Without this fix, code chokes badly on lines where either value or
both tag+value are missing, like bare
 alias
line, or alias w/o the value like
 alias some-module
(syntactically incorrect, but no need for coredumps either).

modutils/modprobe.c

index 7078af22069ef689342b2b6c69c81ed60106262c..df5d4bbd15f2d27d0b61c9d8e47f8807ace4dc1d 100644 (file)
@@ -67,15 +67,17 @@ int parse_tag_value ( char *buffer, char **ptag, char **pvalue )
                buffer++;
        tag = value = buffer;
        while ( !isspace ( *value ))
-               value++;
+               if (!*value) return 0;
+               else value++;
        *value++ = 0;
        while ( isspace ( *value ))
                value++;
+       if (!*value) return 0;
 
        *ptag = tag;
        *pvalue = value;
 
-       return bb_strlen( tag ) && bb_strlen( value );
+       return 1;
 }
 
 /* Jump through hoops to simulate how fgets() grabs just one line at a