Hello,
I think sysctl_string() should return 1 on success.
I verified that variables (for example, modprobe_path[]
and hotplug_path[]) that use sysctl_string() for strategy
function are NOT '\0'-terminated if newlen > sizeof(variables).
I also think ctl_perm() should be called before
calling table->strategy, for strategy function may do
read/write operations.
Best Regards.
---------- START OF PATCH ----------
--- linux-2.6.13.4/kernel/sysctl.c 2005-10-11 03:54:29.000000000 +0900
+++ linux-2.6.13.4-sysctl/kernel/sysctl.c 2005-10-21 15:33:26.000000000 +0900
@@ -16,6 +16,8 @@
* Wendling.
* The list_for_each() macro wasn't appropriate for the sysctl loop.
* Removed it and replaced it with older style, 03/23/00, Bill Wendling
+ * sysctl_string() return 1 on success, 10/21/05, Tetsuo Handa
+ * Added ctl_perm() check for non-leaf nodes, 10/21/05, Tetsuo Handa
*/
#include <linux/config.h>
@@ -1088,6 +1090,12 @@
if (ctl_perm(table, 001))
return -EPERM;
if (table->strategy) {
+ /* Need to check permission, for
+ table->strategy() might do r/w */
+ int op = 0;
+ if (oldval) op |= 004;
+ if (newval) op |= 002;
+ if (ctl_perm(table, op)) return -EPERM;
error = table->strategy(
table, name, nlen,
oldval, oldlenp,
@@ -2146,7 +2154,7 @@
len--;
((char *) table->data)[len] = 0;
}
- return 0;
+ return 1;
}
/*
---------- END OF PATCH ----------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]