diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2015-01-01 19:02:40 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2015-01-01 19:02:40 +0100 |
| commit | 78854520ebecfd24d5c80a266d6779bd1e069016 (patch) | |
| tree | 43b2a405b44b07348a26312488513ad1aa171361 /modutils | |
| parent | 6c19d35f689c911b83073ab1faeffb8040c4b3d9 (diff) | |
| download | busybox-w32-78854520ebecfd24d5c80a266d6779bd1e069016.tar.gz busybox-w32-78854520ebecfd24d5c80a266d6779bd1e069016.tar.bz2 busybox-w32-78854520ebecfd24d5c80a266d6779bd1e069016.zip | |
modprobe: revert checking for /, stop doing basename() on modprobe args
function old new delta
process_module 726 719 -7
filename2modname 81 67 -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-21) Total: -21 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'modutils')
| -rw-r--r-- | modutils/modprobe-small.c | 8 | ||||
| -rw-r--r-- | modutils/modprobe.c | 11 | ||||
| -rw-r--r-- | modutils/modutils.c | 8 |
3 files changed, 12 insertions, 15 deletions
diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c index b7990bff1..dafe91ed7 100644 --- a/modutils/modprobe-small.c +++ b/modutils/modprobe-small.c | |||
| @@ -149,9 +149,13 @@ static void replace(char *s, char what, char with) | |||
| 149 | static char *filename2modname(const char *filename, char *modname) | 149 | static char *filename2modname(const char *filename, char *modname) |
| 150 | { | 150 | { |
| 151 | int i; | 151 | int i; |
| 152 | char *from; | 152 | const char *from; |
| 153 | 153 | ||
| 154 | from = bb_get_last_path_component_nostrip(filename); | 154 | // Disabled since otherwise "modprobe dir/name" would work |
| 155 | // as if it is "modprobe name". It is unclear why | ||
| 156 | // 'basenamization' was here in the first place. | ||
| 157 | //from = bb_get_last_path_component_nostrip(filename); | ||
| 158 | from = filename; | ||
| 155 | for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) | 159 | for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) |
| 156 | modname[i] = (from[i] == '-') ? '_' : from[i]; | 160 | modname[i] = (from[i] == '-') ? '_' : from[i]; |
| 157 | modname[i] = '\0'; | 161 | modname[i] = '\0'; |
diff --git a/modutils/modprobe.c b/modutils/modprobe.c index f0904285b..f08f0850d 100644 --- a/modutils/modprobe.c +++ b/modutils/modprobe.c | |||
| @@ -238,17 +238,6 @@ static void add_probe(const char *name) | |||
| 238 | { | 238 | { |
| 239 | struct module_entry *m; | 239 | struct module_entry *m; |
| 240 | 240 | ||
| 241 | /* | ||
| 242 | * get_or_add_modentry() strips path from name and works | ||
| 243 | * on remaining basename. | ||
| 244 | * This would make "rmmod dir/name" and "modprobe dir/name" | ||
| 245 | * to work like "rmmod name" and "modprobe name", | ||
| 246 | * which is wrong, and can be abused via implicit modprobing: | ||
| 247 | * "ifconfig /usbserial up" tries to modprobe netdev-/usbserial. | ||
| 248 | */ | ||
| 249 | if (strchr(name, '/')) | ||
| 250 | bb_error_msg_and_die("malformed module name '%s'", name); | ||
| 251 | |||
| 252 | m = get_or_add_modentry(name); | 241 | m = get_or_add_modentry(name); |
| 253 | if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS)) | 242 | if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS)) |
| 254 | && (m->flags & MODULE_FLAG_LOADED) | 243 | && (m->flags & MODULE_FLAG_LOADED) |
diff --git a/modutils/modutils.c b/modutils/modutils.c index 6187ca72f..ff79d3fac 100644 --- a/modutils/modutils.c +++ b/modutils/modutils.c | |||
| @@ -48,13 +48,17 @@ int FAST_FUNC string_to_llist(char *string, llist_t **llist, const char *delim) | |||
| 48 | char* FAST_FUNC filename2modname(const char *filename, char *modname) | 48 | char* FAST_FUNC filename2modname(const char *filename, char *modname) |
| 49 | { | 49 | { |
| 50 | int i; | 50 | int i; |
| 51 | char *from; | 51 | const char *from; |
| 52 | 52 | ||
| 53 | if (filename == NULL) | 53 | if (filename == NULL) |
| 54 | return NULL; | 54 | return NULL; |
| 55 | if (modname == NULL) | 55 | if (modname == NULL) |
| 56 | modname = xmalloc(MODULE_NAME_LEN); | 56 | modname = xmalloc(MODULE_NAME_LEN); |
| 57 | from = bb_get_last_path_component_nostrip(filename); | 57 | // Disabled since otherwise "modprobe dir/name" would work |
| 58 | // as if it is "modprobe name". It is unclear why | ||
| 59 | // 'basenamization' was here in the first place. | ||
| 60 | //from = bb_get_last_path_component_nostrip(filename); | ||
| 61 | from = filename; | ||
| 58 | for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) | 62 | for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) |
| 59 | modname[i] = (from[i] == '-') ? '_' : from[i]; | 63 | modname[i] = (from[i] == '-') ? '_' : from[i]; |
| 60 | modname[i] = '\0'; | 64 | modname[i] = '\0'; |
