kprobes: handle empty/invalid input to debugfs "enabled" file

When writing invalid input to 'debug/kprobes/enabled' it'll silently be
ignored.  Even worse, when writing an empty string to this file, the
outcome is purely random as the switch statement will make its decision
based on the value of an uninitialized stack variable.

Fix this by handling invalid/empty input as error returning -EINVAL.

Signed-off-by: Mathias Krause <minipli@googlemail.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Mathias Krause 2013-07-03 15:05:39 -07:00 committed by Linus Torvalds
parent ca75b4d879
commit 10fb46d5f7
1 changed files with 3 additions and 0 deletions

View File

@ -2332,6 +2332,7 @@ static ssize_t write_enabled_file_bool(struct file *file,
if (copy_from_user(buf, user_buf, buf_size)) if (copy_from_user(buf, user_buf, buf_size))
return -EFAULT; return -EFAULT;
buf[buf_size] = '\0';
switch (buf[0]) { switch (buf[0]) {
case 'y': case 'y':
case 'Y': case 'Y':
@ -2343,6 +2344,8 @@ static ssize_t write_enabled_file_bool(struct file *file,
case '0': case '0':
disarm_all_kprobes(); disarm_all_kprobes();
break; break;
default:
return -EINVAL;
} }
return count; return count;