Fix bug 1017, which reports that insmod segfaults when /lib/modules doesn't
authorMatt Kraai <kraai@debian.org>
Tue, 1 Aug 2000 18:16:56 +0000 (18:16 -0000)
committerMatt Kraai <kraai@debian.org>
Tue, 1 Aug 2000 18:16:56 +0000 (18:16 -0000)
exist.  Also allow early search termination (per the comments).

insmod.c
modutils/insmod.c
utility.c

index cd75e24163d0a1d392a74f23781899e09429bd7c..7b637ef45e4b652e3ac75722b69b3bc21c25211d 100644 (file)
--- a/insmod.c
+++ b/insmod.c
@@ -70,7 +70,7 @@
 #ifndef MODUTILS_MODULE_H
 #define MODUTILS_MODULE_H 1
 
-#ident "$Id: insmod.c,v 1.19 2000/07/19 17:35:54 andersen Exp $"
+#ident "$Id: insmod.c,v 1.20 2000/08/01 18:16:56 kraai 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
@@ -276,7 +276,7 @@ int delete_module(const char *);
 #ifndef MODUTILS_OBJ_H
 #define MODUTILS_OBJ_H 1
 
-#ident "$Id: insmod.c,v 1.19 2000/07/19 17:35:54 andersen Exp $"
+#ident "$Id: insmod.c,v 1.20 2000/08/01 18:16:56 kraai Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -2694,7 +2694,7 @@ extern int insmod_main( int argc, char **argv)
        if ((fp = fopen(*argv, "r")) == NULL) {
                /* Hmpf.  Could not open it. Search through _PATH_MODULES to find a module named m_name */
                if (recursiveAction(_PATH_MODULES, TRUE, FALSE, FALSE,
-                                                       findNamedModule, 0, m_fullName) == TRUE) 
+                                                       findNamedModule, 0, m_fullName) == FALSE) 
                {
                        if (m_filename[0] == '\0'
                                || ((fp = fopen(m_filename, "r")) == NULL)) 
@@ -2702,7 +2702,8 @@ extern int insmod_main( int argc, char **argv)
                                errorMsg("No module named '%s' found in '%s'\n", m_fullName, _PATH_MODULES);
                                exit(FALSE);
                        }
-               }
+               } else
+                       fatalError("No module named '%s' found in '%s'\n", m_fullName, _PATH_MODULES);
        } else
                memcpy(m_filename, *argv, strlen(*argv));
 
index cd75e24163d0a1d392a74f23781899e09429bd7c..7b637ef45e4b652e3ac75722b69b3bc21c25211d 100644 (file)
@@ -70,7 +70,7 @@
 #ifndef MODUTILS_MODULE_H
 #define MODUTILS_MODULE_H 1
 
-#ident "$Id: insmod.c,v 1.19 2000/07/19 17:35:54 andersen Exp $"
+#ident "$Id: insmod.c,v 1.20 2000/08/01 18:16:56 kraai 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
@@ -276,7 +276,7 @@ int delete_module(const char *);
 #ifndef MODUTILS_OBJ_H
 #define MODUTILS_OBJ_H 1
 
-#ident "$Id: insmod.c,v 1.19 2000/07/19 17:35:54 andersen Exp $"
+#ident "$Id: insmod.c,v 1.20 2000/08/01 18:16:56 kraai Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -2694,7 +2694,7 @@ extern int insmod_main( int argc, char **argv)
        if ((fp = fopen(*argv, "r")) == NULL) {
                /* Hmpf.  Could not open it. Search through _PATH_MODULES to find a module named m_name */
                if (recursiveAction(_PATH_MODULES, TRUE, FALSE, FALSE,
-                                                       findNamedModule, 0, m_fullName) == TRUE) 
+                                                       findNamedModule, 0, m_fullName) == FALSE) 
                {
                        if (m_filename[0] == '\0'
                                || ((fp = fopen(m_filename, "r")) == NULL)) 
@@ -2702,7 +2702,8 @@ extern int insmod_main( int argc, char **argv)
                                errorMsg("No module named '%s' found in '%s'\n", m_fullName, _PATH_MODULES);
                                exit(FALSE);
                        }
-               }
+               } else
+                       fatalError("No module named '%s' found in '%s'\n", m_fullName, _PATH_MODULES);
        } else
                memcpy(m_filename, *argv, strlen(*argv));
 
index 565fd735c56fb11c1c2cf9bf2da1c05933671364..422d569d2eea5f6123d9a1214ceb2000183e60ff 100644 (file)
--- a/utility.c
+++ b/utility.c
@@ -641,7 +641,7 @@ int recursiveAction(const char *fileName,
                        status =
                                recursiveAction(nextFile, TRUE, followLinks, depthFirst,
                                                                fileAction, dirAction, userData);
-                       if (status < 0) {
+                       if (status == FALSE) {
                                closedir(dir);
                                return FALSE;
                        }