projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
7314e61
)
uml: check length in exitcode_proc_write()
author
Dan Carpenter
<
[email protected]
>
Tue, 29 Oct 2013 19:06:04 +0000
(22:06 +0300)
committer
Linus Torvalds
<
[email protected]
>
Wed, 30 Oct 2013 19:24:49 +0000
(12:24 -0700)
We don't cap the size of buffer from the user so we could write past the
end of the array here. Only root can write to this file.
Reported-by: Nico Golde <
[email protected]
>
Reported-by: Fabian Yamaguchi <
[email protected]
>
Signed-off-by: Dan Carpenter <
[email protected]
>
Cc:
[email protected]
Signed-off-by: Linus Torvalds <
[email protected]
>
arch/um/kernel/exitcode.c
patch
|
blob
|
history
diff --git
a/arch/um/kernel/exitcode.c
b/arch/um/kernel/exitcode.c
index 829df49dee99c6093d5586d0e2c19e34786dfa97..41ebbfebb3332f2bc7269a754ff96b377e17212b 100644
(file)
--- a/
arch/um/kernel/exitcode.c
+++ b/
arch/um/kernel/exitcode.c
@@
-40,9
+40,11
@@
static ssize_t exitcode_proc_write(struct file *file,
const char __user *buffer, size_t count, loff_t *pos)
{
char *end, buf[sizeof("nnnnn\0")];
+ size_t size;
int tmp;
- if (copy_from_user(buf, buffer, count))
+ size = min(count, sizeof(buf));
+ if (copy_from_user(buf, buffer, size))
return -EFAULT;
tmp = simple_strtol(buf, &end, 0);