modutils: overflow fix
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 26 Feb 2009 12:00:29 +0000 (12:00 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 26 Feb 2009 12:00:29 +0000 (12:00 -0000)
modutils/modutils.c
modutils/modutils.h

index 0d7d72d8b330a89f393ec640232d8192a609f569..8836f7c691b6c7beeaaec1a9eec5bb7e106e4c6b 100644 (file)
@@ -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;
 
index 32ee18b06df1fa6d930cba63290de6995ac60745..a609ea06ab74845d5bb78811cc166af3ac828120 100644 (file)
@@ -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;