* Fixed insmod module option parsing for options lacking an '='.
authorEric Andersen <andersen@codepoet.org>
Mon, 26 Jun 2000 11:16:22 +0000 (11:16 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 26 Jun 2000 11:16:22 +0000 (11:16 -0000)
    Fix thanks to Marc Nijdam <marc_nijdam@hp.com>
 -Erik

Changelog
insmod.c
modutils/insmod.c

index aa8b15db7940f4f9955873c06e4880be74904c02..889d17df3f479d3fbe2b94cc58749dbc1b8e3e7b 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -4,6 +4,8 @@
            "none" entries in /proc/mounts, added a hack to make sysinfo
            work with both old and new kernels).
        * Fixed a nasty bug in tar when could mess up saved symlinks.
+       * Fixed insmod module option parsing for options lacking an '='.
+           Fix thanks to Marc Nijdam <marc_nijdam@hp.com>
 
         -Erik Andersen
 
index f6575c97fe77f36c04c71a4e405d400d17401c27..00646887755be1c51baab0dd13d087648c91fdf4 100644 (file)
--- a/insmod.c
+++ b/insmod.c
@@ -71,7 +71,7 @@
 #ifndef MODUTILS_MODULE_H
 #define MODUTILS_MODULE_H 1
 
-#ident "$Id: insmod.c,v 1.10 2000/06/22 18:19:31 andersen Exp $"
+#ident "$Id: insmod.c,v 1.11 2000/06/26 11:16:22 andersen Exp $"
 
 /* This file contains the structures used by the 2.0 and 2.1 kernels.
    We do not use the kernel headers directly because we do not wish
@@ -277,7 +277,7 @@ int delete_module(const char *);
 #ifndef MODUTILS_OBJ_H
 #define MODUTILS_OBJ_H 1
 
-#ident "$Id: insmod.c,v 1.10 2000/06/22 18:19:31 andersen Exp $"
+#ident "$Id: insmod.c,v 1.11 2000/06/26 11:16:22 andersen Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -1189,8 +1189,10 @@ old_process_module_arguments(struct obj_file *f, int argc, char **argv)
                int *loc;
 
                p = *argv;
-               if ((q = strchr(p, '=')) == NULL)
+               if ((q = strchr(p, '=')) == NULL) {
+                       argc--;
                        continue;
+                }
                *q++ = '\0';
 
                sym = obj_find_symbol(f, p);
@@ -1550,8 +1552,10 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
                int min, max, n;
 
                p = *argv;
-               if ((q = strchr(p, '=')) == NULL)
+               if ((q = strchr(p, '=')) == NULL) {
+                       argc--;
                        continue;
+                }
 
                key = alloca(q - p + 6);
                memcpy(key, "parm_", 5);
index f6575c97fe77f36c04c71a4e405d400d17401c27..00646887755be1c51baab0dd13d087648c91fdf4 100644 (file)
@@ -71,7 +71,7 @@
 #ifndef MODUTILS_MODULE_H
 #define MODUTILS_MODULE_H 1
 
-#ident "$Id: insmod.c,v 1.10 2000/06/22 18:19:31 andersen Exp $"
+#ident "$Id: insmod.c,v 1.11 2000/06/26 11:16:22 andersen Exp $"
 
 /* This file contains the structures used by the 2.0 and 2.1 kernels.
    We do not use the kernel headers directly because we do not wish
@@ -277,7 +277,7 @@ int delete_module(const char *);
 #ifndef MODUTILS_OBJ_H
 #define MODUTILS_OBJ_H 1
 
-#ident "$Id: insmod.c,v 1.10 2000/06/22 18:19:31 andersen Exp $"
+#ident "$Id: insmod.c,v 1.11 2000/06/26 11:16:22 andersen Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -1189,8 +1189,10 @@ old_process_module_arguments(struct obj_file *f, int argc, char **argv)
                int *loc;
 
                p = *argv;
-               if ((q = strchr(p, '=')) == NULL)
+               if ((q = strchr(p, '=')) == NULL) {
+                       argc--;
                        continue;
+                }
                *q++ = '\0';
 
                sym = obj_find_symbol(f, p);
@@ -1550,8 +1552,10 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
                int min, max, n;
 
                p = *argv;
-               if ((q = strchr(p, '=')) == NULL)
+               if ((q = strchr(p, '=')) == NULL) {
+                       argc--;
                        continue;
+                }
 
                key = alloca(q - p + 6);
                memcpy(key, "parm_", 5);