diff options
author | Denis Vlasenko | 2009-02-26 12:00:29 +0000 |
---|---|---|
committer | Denis Vlasenko | 2009-02-26 12:00:29 +0000 |
commit | f62f761936ed33fa89680f5d129db55bee610eb9 (patch) | |
tree | ddb54a431f79c3f70663ea0a022a302eeeec8659 | |
parent | a76f10b544b4ffe4b0aaf41eede1aeb9b13a95e8 (diff) | |
download | busybox-f62f761936ed33fa89680f5d129db55bee610eb9.zip busybox-f62f761936ed33fa89680f5d129db55bee610eb9.tar.gz |
modutils: overflow fix
-rw-r--r-- | modutils/modutils.c | 2 | ||||
-rw-r--r-- | modutils/modutils.h | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/modutils/modutils.c b/modutils/modutils.c index 0d7d72d..8836f7c 100644 --- a/modutils/modutils.c +++ b/modutils/modutils.c @@ -71,7 +71,7 @@ char * FAST_FUNC filename2modname(const char *filename, char *modname) if (modname == NULL) modname = xmalloc(MODULE_NAME_LEN); from = bb_get_last_path_component_nostrip(filename); - for (i = 0; i < MODULE_NAME_LEN && from[i] != '\0' && from[i] != '.'; i++) + for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) modname[i] = (from[i] == '-') ? '_' : from[i]; modname[i] = 0; diff --git a/modutils/modutils.h b/modutils/modutils.h index 32ee18b..a609ea0 100644 --- a/modutils/modutils.h +++ b/modutils/modutils.h @@ -16,8 +16,9 @@ # pragma GCC visibility push(hidden) #endif -/* As defined in linux/include/linux/module.h */ -#define MODULE_NAME_LEN 64 +/* linux/include/linux/module.h has 64, but this is also used + * internally for the maximum alias name length, which can be quite long */ +#define MODULE_NAME_LEN 256 const char *moderror(int err) FAST_FUNC; llist_t *llist_find(llist_t *first, const char *str) FAST_FUNC; |