From 9371411715c8dd882f1d65a712f1f38b6d38d01f Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Sat, 14 Jan 2017 01:00:33 +0800 Subject: [PATCH] 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 --- kmodloader.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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; -- 2.25.1