modprobe: revert checking for /, stop doing basename() on modprobe args
No binary (build failed)
—
(log yok)
| @@ -149,9 +149,13 @@ static void replace(char *s, char what, char with) | |
| static char *filename2modname(const char *filename, char *modname) | |
| { | |
| int i; | |
| - | char *from; |
| + | const char *from; |
| - | from = bb_get_last_path_component_nostrip(filename); |
| + | // Disabled since otherwise "modprobe dir/name" would work |
| + | // as if it is "modprobe name". It is unclear why |
| + | // 'basenamization' was here in the first place. |
| + | //from = bb_get_last_path_component_nostrip(filename); |
| + | from = filename; |
| for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) | |
| modname[i] = (from[i] == '-') ? '_' : from[i]; | |
| modname[i] = '\0'; | |
| @@ -238,17 +238,6 @@ static void add_probe(const char *name) | |
| { | |
| struct module_entry *m; | |
| - | /* |
| - | * get_or_add_modentry() strips path from name and works |
| - | * on remaining basename. |
| - | * This would make "rmmod dir/name" and "modprobe dir/name" |
| - | * to work like "rmmod name" and "modprobe name", |
| - | * which is wrong, and can be abused via implicit modprobing: |
| - | * "ifconfig /usbserial up" tries to modprobe netdev-/usbserial. |
| - | */ |
| - | if (strchr(name, '/')) |
| - | bb_error_msg_and_die("malformed module name '%s'", name); |
| - | |
| m = get_or_add_modentry(name); | |
| if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS)) | |
| && (m->flags & MODULE_FLAG_LOADED) | |
| @@ -48,13 +48,17 @@ int FAST_FUNC string_to_llist(char *string, llist_t **llist, const char *delim) | |
| char* FAST_FUNC filename2modname(const char *filename, char *modname) | |
| { | |
| int i; | |
| - | char *from; |
| + | const char *from; |
| if (filename == NULL) | |
| return NULL; | |
| if (modname == NULL) | |
| modname = xmalloc(MODULE_NAME_LEN); | |
| - | from = bb_get_last_path_component_nostrip(filename); |
| + | // Disabled since otherwise "modprobe dir/name" would work |
| + | // as if it is "modprobe name". It is unclear why |
| + | // 'basenamization' was here in the first place. |
| + | //from = bb_get_last_path_component_nostrip(filename); |
| + | from = filename; |
| for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) | |
| modname[i] = (from[i] == '-') ? '_' : from[i]; | |
| modname[i] = '\0'; | |