diff options
author | Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> | 2007-11-14 19:58:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-14 21:45:37 -0500 |
commit | 6fc48af82cef55546d640778698943b6227b7fb0 (patch) | |
tree | b47f618967576fecae480caedabcd45c88073541 | |
parent | dbd0cf48842700c3a694dcd32b29e63e27f37acc (diff) |
sysctl: check length at deprecated_sysctl_warning
Original patch assumed args->nlen < CTL_MAXNAME, but it can be false.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | kernel/sysctl.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 3a1744fed2b6..0deed82a6156 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -2620,6 +2620,10 @@ static int deprecated_sysctl_warning(struct __sysctl_args *args) | |||
2620 | int name[CTL_MAXNAME]; | 2620 | int name[CTL_MAXNAME]; |
2621 | int i; | 2621 | int i; |
2622 | 2622 | ||
2623 | /* Check args->nlen. */ | ||
2624 | if (args->nlen < 0 || args->nlen > CTL_MAXNAME) | ||
2625 | return -ENOTDIR; | ||
2626 | |||
2623 | /* Read in the sysctl name for better debug message logging */ | 2627 | /* Read in the sysctl name for better debug message logging */ |
2624 | for (i = 0; i < args->nlen; i++) | 2628 | for (i = 0; i < args->nlen; i++) |
2625 | if (get_user(name[i], args->name + i)) | 2629 | if (get_user(name[i], args->name + i)) |