diff options
author | Matt Kraai <kraai@debian.org> | 2000-08-01 18:16:56 +0000 |
---|---|---|
committer | Matt Kraai <kraai@debian.org> | 2000-08-01 18:16:56 +0000 |
commit | 0f8f7b8a35cc87965272f53bf9b504866e6e0692 (patch) | |
tree | 3c8ee3716604d3a4e86a0fbde01d0caad7b88caf | |
parent | 98bbd688a80627ec4071b7c819ee2116f5ecc6d4 (diff) | |
download | busybox-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.c | 9 | ||||
-rw-r--r-- | modutils/insmod.c | 9 | ||||
-rw-r--r-- | utility.c | 2 |
3 files changed, 11 insertions, 9 deletions
@@ -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)); @@ -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; } |