aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2000-08-01 18:16:56 +0000
committerMatt Kraai <kraai@debian.org>2000-08-01 18:16:56 +0000
commit0f8f7b8a35cc87965272f53bf9b504866e6e0692 (patch)
tree3c8ee3716604d3a4e86a0fbde01d0caad7b88caf
parent98bbd688a80627ec4071b7c819ee2116f5ecc6d4 (diff)
downloadbusybox-0f8f7b8a35cc87965272f53bf9b504866e6e0692.tar.gz
Fix bug 1017, which reports that insmod segfaults when /lib/modules doesn't
exist. Also allow early search termination (per the comments).
-rw-r--r--insmod.c9
-rw-r--r--modutils/insmod.c9
-rw-r--r--utility.c2
3 files changed, 11 insertions, 9 deletions
diff --git a/insmod.c b/insmod.c
index cd75e2416..7b637ef45 100644
--- 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));
diff --git a/modutils/insmod.c b/modutils/insmod.c
index cd75e2416..7b637ef45 100644
--- a/modutils/insmod.c
+++ b/modutils/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));
diff --git a/utility.c b/utility.c
index 565fd735c..422d569d2 100644
--- 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;
}