On Sun, Feb 10, 2008 at 04:47:57PM +0200, Pekka J Enberg wrote:
> From: Bastian Blank <[EMAIL PROTECTED]>
> 
> The commit 8811930dc74a503415b35c4a79d14fb0b408a361 ("splice: missing user
> pointer access verification") added access_ok() to copy_from_user_mmap_sem()
> which only ensures we can copy the struct iovecs from userspace to the kernel
> but we also must check whether we can access the actual memory region pointed
> to by the struct iovec to close the local root exploit.
> 
> Cc: <[EMAIL PROTECTED]>
> Cc: Jens Axboe <[EMAIL PROTECTED]>
> Cc: Andrew Morton <[EMAIL PROTECTED]>
> Signed-off-by: Pekka Enberg <[EMAIL PROTECTED]>
Signed-off-by: Bastian Blank <[EMAIL PROTECTED]>

> Index: linux-2.6/fs/splice.c
> ===================================================================
> --- linux-2.6.orig/fs/splice.c
> +++ linux-2.6/fs/splice.c
> @@ -1237,6 +1237,9 @@ static int get_iovec_page_array(const st
>               if (unlikely(!base))
>                       break;
>  
> +             if (unlikely(!access_ok(VERIFY_READ, base, len)))
> +                     break;
> +
>               /*
>                * Get this base offset and number of pages, then map
>                * in the user pages.

-- 
Those who hate and fight must stop themselves -- otherwise it is not stopped.
                -- Spock, "Day of the Dove", stardate unknown

Attachment: signature.asc
Description: Digital signature

Reply via email to