diff options
Diffstat (limited to 'modutils')
-rw-r--r-- | modutils/modprobe-small.c | 3 | ||||
-rw-r--r-- | modutils/modutils.c | 11 |
2 files changed, 8 insertions, 6 deletions
diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c index f4f17e7..188a7f2 100644 --- a/modutils/modprobe-small.c +++ b/modutils/modprobe-small.c @@ -205,6 +205,7 @@ static void parse_module(module_info *info, const char *pathname) /* Read (possibly compressed) module */ len = 64 * 1024 * 1024; /* 64 Mb at most */ module_image = xmalloc_open_zipped_read_close(pathname, &len); + /* module_image == NULL is ok here, find_keyword handles it */ //TODO: optimize redundant module body reads /* "alias1 symbol:sym1 alias2 symbol:sym2" */ @@ -845,6 +846,8 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) len = MAXINT(ssize_t); map = xmalloc_open_zipped_read_close(*argv, &len); + if (!map) + bb_perror_msg_and_die("can't read '%s'", *argv); if (init_module(map, len, IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(options ? options : "") IF_NOT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE("") diff --git a/modutils/modutils.c b/modutils/modutils.c index 565d0d2..415dbbe 100644 --- a/modutils/modutils.c +++ b/modutils/modutils.c @@ -71,12 +71,11 @@ char* FAST_FUNC parse_cmdline_module_options(char **argv) optlen = 0; while (*++argv) { options = xrealloc(options, optlen + 2 + strlen(*argv) + 2); - /* Older versions were enclosing space-containing *argv in "", - * but both modprobe and insmod from module-init-tools 3.11.1 - * don't do this anymore. (As to extra trailing space, - * insmod adds it but modprobe does not. We do in both cases) - */ - optlen += sprintf(options + optlen, "%s ", *argv); + /* Spaces handled by "" pairs, but no way of escaping quotes */ +//TODO: module-init-tools version 3.11.1 quotes only value: +//it generates var="val with spaces", not "var=val with spaces" +//(and it won't quote var *name* even if it has spaces) + optlen += sprintf(options + optlen, (strchr(*argv, ' ') ? "\"%s\" " : "%s "), *argv); } return options; } |