Messages in this thread Patch in this message | | | From | Xie XiuQi <> | Subject | [PATCH] modpost: abort if a module name is too long | Date | Sat, 20 May 2017 15:46:21 +0800 |
| |
From: Wanlong Gao <gaowanlong@huawei.com>
Module name has a limited length, but currently the build system allows the build finishing even if the module name is too long.
CC /root/kprobe_example/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.mod.o /root/kprobe_example/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.mod.c:9:2: warning: initializer-string for array of chars is too long [enabled by default] .name = KBUILD_MODNAME, ^
but it's merely a warning.
This patch adds the check of the module name length in modpost and stops the build properly.
Signed-off-by: Wanlong Gao <gaowanlong@huawei.com> Signed-off-by: Xie XiuQi <xiexiuqi@huawei.com> --- scripts/mod/modpost.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 30d752a..db11c57 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2166,6 +2166,17 @@ static int add_versions(struct buffer *b, struct module *mod) { struct symbol *s, *exp; int err = 0; + const char *mod_name; + + mod_name = strrchr(mod->name, '/'); + if (mod_name == NULL) + mod_name = mod->name; + else + mod_name++; + if (strlen(mod_name) >= MODULE_NAME_LEN) { + merror("module name is too long [%s.ko]\n", mod->name); + return 1; + } for (s = mod->unres; s; s = s->next) { exp = find_symbol(s->name); -- 1.8.3.1
| |