aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2014-11-20 18:24:33 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2014-11-20 18:24:33 +0100
commit4e314faa0aecb66717418e9a47a4451aec59262b (patch)
tree2cd9ecfef1a5cb293d97fbdc026b7fd82fed3148
parentf5add44981b43490376ea0dfed1420dba09a3a75 (diff)
downloadbusybox-w32-4e314faa0aecb66717418e9a47a4451aec59262b.tar.gz
busybox-w32-4e314faa0aecb66717418e9a47a4451aec59262b.tar.bz2
busybox-w32-4e314faa0aecb66717418e9a47a4451aec59262b.zip
modprobe,rmmod: reject module names with slashes
function old new delta add_probe 86 113 +27 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--modutils/modprobe.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index f08f0850d..f0904285b 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -238,6 +238,17 @@ 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
241 m = get_or_add_modentry(name); 252 m = get_or_add_modentry(name);
242 if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS)) 253 if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS))
243 && (m->flags & MODULE_FLAG_LOADED) 254 && (m->flags & MODULE_FLAG_LOADED)