|
From: Richard W. <ri...@no...> - 2013-11-01 09:22:35
|
Am 29.10.2013 20:06, schrieb Dan Carpenter:
> 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 <ni...@ng...>
> Reported-by: Fabian Yamaguchi <fa...@go...>
> Signed-off-by: Dan Carpenter <dan...@or...>
Thanks everyone!
Patch applied and an it's way to Linus' tree.
Thanks,
//richard
> diff --git a/arch/um/kernel/exitcode.c b/arch/um/kernel/exitcode.c
> index 829df49..41ebbfe 100644
> --- 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);
>
|