From f1ef2c311d5bc4d0e1bae60df774899db5611cc9 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Wed, 30 Aug 2017 15:09:49 +0200 Subject: [PATCH] kmodloader: fix possible segfaults Signed-off-by: Hans Dedecker --- kmodloader.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kmodloader.c b/kmodloader.c index a4d492d..3dc7665 100644 --- a/kmodloader.c +++ b/kmodloader.c @@ -563,6 +563,9 @@ static int insert_module(char *path, const char *options) } data = malloc(s.st_size); + if (!data) + goto out; + if (read(fd, data, s.st_size) == s.st_size) { ret = syscall(__NR_init_module, data, (unsigned long) s.st_size, options); if (errno == EEXIST) @@ -571,6 +574,7 @@ static int insert_module(char *path, const char *options) else ULOG_ERR("failed to read full module %s\n", path); +out: close(fd); free(data); @@ -692,6 +696,11 @@ static int main_insmod(int argc, char **argv) len += strlen(argv[i]) + 1; options = malloc(len); + if (!options) { + ret = -1; + goto err; + } + options[0] = 0; cur = options; for (i = 2; i < argc; i++) { @@ -897,6 +906,9 @@ static int main_loader(int argc, char **argv) dir = argv[1]; path = malloc(strlen(dir) + 2); + if (!path) + return -1; + strcpy(path, dir); strcat(path, "*"); -- 2.25.1