fix param_sysfs_builtin name length check
patch22800a2830in mainline. Commitfaf8c714f4caused a regression: parameter names longer than MAX_KBUILD_MODNAME will now be rejected, although we just need to keep the module name part that short. This patch restores the old behaviour while still avoiding that memchr is called with its length parameter larger than the total string length. Signed-off-by: Jan Kiszka <jan.kiszka@web.de> Cc: Dave Young <hidave.darkstar@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Chuck Ebbert <cebbert@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2b5ee2866a
commit
e8af293bb2
+6
-9
@@ -595,19 +595,16 @@ static void __init param_sysfs_builtin(void)
|
||||
|
||||
for (i=0; i < __stop___param - __start___param; i++) {
|
||||
char *dot;
|
||||
size_t kplen;
|
||||
size_t max_name_len;
|
||||
|
||||
kp = &__start___param[i];
|
||||
kplen = strlen(kp->name);
|
||||
max_name_len =
|
||||
min_t(size_t, MAX_KBUILD_MODNAME, strlen(kp->name));
|
||||
|
||||
/* We do not handle args without periods. */
|
||||
if (kplen > MAX_KBUILD_MODNAME) {
|
||||
DEBUGP("kernel parameter name is too long: %s\n", kp->name);
|
||||
continue;
|
||||
}
|
||||
dot = memchr(kp->name, '.', kplen);
|
||||
dot = memchr(kp->name, '.', max_name_len);
|
||||
if (!dot) {
|
||||
DEBUGP("couldn't find period in %s\n", kp->name);
|
||||
DEBUGP("couldn't find period in first %d characters "
|
||||
"of %s\n", MAX_KBUILD_MODNAME, kp->name);
|
||||
continue;
|
||||
}
|
||||
name_len = dot - kp->name;
|
||||
|
||||
Reference in New Issue
Block a user