Skip to contentSkip to conversation

Fix strlen_user usage in module.c

PATCH New Rusty Russell 1 participant 1 message Jan 13, 2003

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix strlen_user usage in module.c

Spotted by Andi Kleen. strlen_user *is* documented, I just made assumptions.

Name: Fix strlen_user usage
Author: Rusty Russell
Status: Trivial

D: strlen_user returns 0 on error, not an error number, and otherwise
D: returns the length including the NUL byte. Found by Andi Kleen.

kernel/module.c +6 -6
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22129-linux-2.5.55/kernel/module.c .22129-linux-2.5.55.updated/kernel/module.c
@@ -1096,17 +1096,17 @@ static struct module *load_module(void *
 	mod = (void *)sechdrs[modindex].sh_addr;
 
 	/* Now copy in args */
-	err = strlen_user(uargs);
-	if (err < 0)
+	arglen = strlen_user(uargs);
+	if (!arglen) {
+		err = -EFAULT;
 		goto free_hdr;
-	arglen = err;
-
-	args = kmalloc(arglen+1, GFP_KERNEL);
+	}
+	args = kmalloc(arglen, GFP_KERNEL);
 	if (!args) {
 		err = -ENOMEM;
 		goto free_hdr;
 	}
-	if (copy_from_user(args, uargs, arglen+1) != 0) {
+	if (copy_from_user(args, uargs, arglen) != 0) {
 		err = -EFAULT;
 		goto free_mod;
 	}

--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.