From: Yousong Zhou Date: Fri, 13 Jan 2017 17:00:33 +0000 (+0800) Subject: kmodloader: fix out-of-bound access when parsing .modinfo X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9371411715c8dd882f1d65a712f1f38b6d38d01f;p=oweals%2Fubox.git kmodloader: fix out-of-bound access when parsing .modinfo Fixes output of "modinfo nf_conntrack_ipv4" module: /lib/modules/4.4.40/nf_conntrack_ipv4.ko license: GPL alias: ip_conntrack alias: nf_conntrack-2 depends: nf_conntrack,nf_defrag_ipv4 src: %pI4 dst=%pI4 Signed-off-by: Yousong Zhou --- diff --git a/kmodloader.c b/kmodloader.c index 065ac82..c780379 100644 --- a/kmodloader.c +++ b/kmodloader.c @@ -302,12 +302,14 @@ static struct module* get_module_info(const char *module, const char *name) } strings = map + offset; - while (strings && (strings < map + offset + size)) { + while (true) { char *sep; int len; while (!strings[0]) strings++; + if (strings >= map + offset + size) + break; sep = strstr(strings, "="); if (!sep) break; @@ -410,12 +412,14 @@ static int print_modinfo(char *module) strings = map + offset; printf("module:\t\t%s\n", module); - while (strings && (strings < map + offset + size)) { + while (true) { char *dup = NULL; char *sep; while (!strings[0]) strings++; + if (strings >= map + offset + size) + break; sep = strstr(strings, "="); if (!sep) break;