insmod: check for module read errors
No binary (build failed)
—
(log yok)
| @@ -674,6 +674,8 @@ extern char *xmalloc_reads(int fd, char *pfx, size_t *maxsz_p) FAST_FUNC; | |
| extern void *xmalloc_read(int fd, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; | |
| /* Returns NULL if file can't be opened (default max size: INT_MAX - 4095) */ | |
| extern void *xmalloc_open_read_close(const char *filename, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; | |
| + | /* Never returns NULL */ |
| + | extern void *xmalloc_xopen_read_close(const char *filename, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; |
| /* Autodetects gzip/bzip2 formats. fd may be in the middle of the file! */ | |
| #if ENABLE_FEATURE_SEAMLESS_LZMA \ | |
| || ENABLE_FEATURE_SEAMLESS_BZ2 \ | |
| @@ -686,8 +688,6 @@ extern void setup_unzip_on_fd(int fd /*, int fail_if_not_detected*/) FAST_FUNC; | |
| /* Autodetects .gz etc */ | |
| extern int open_zipped(const char *fname) FAST_FUNC; | |
| extern void *xmalloc_open_zipped_read_close(const char *fname, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; | |
| - | /* Never returns NULL */ |
| - | extern void *xmalloc_xopen_read_close(const char *filename, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; |
| extern ssize_t safe_write(int fd, const void *buf, size_t count) FAST_FUNC; | |
| // NB: will return short write on error, not -1, | |
| @@ -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("") | |