[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20130227.153344.2178498124458359369.davem@davemloft.net>
Date: Wed, 27 Feb 2013 15:33:44 -0500 (EST)
From: David Miller <davem@...emloft.net>
To: linux@...ck-us.net
Cc: netdev@...r.kernel.org, linux-sctp@...r.kernel.org,
vyasevich@...il.com, sri@...ibm.com, nhorman@...driver.com
Subject: Re: [PATCH] net/sctp: Validate parameter size for
SCTP_GET_ASSOC_STATS control message
From: Guenter Roeck <linux@...ck-us.net>
Date: Wed, 27 Feb 2013 11:43:51 -0800
> Building sctp may fail with:
>
> In function ‘copy_from_user’,
> inlined from ‘sctp_getsockopt_assoc_stats’ at
> net/sctp/socket.c:5656:20:
> arch/x86/include/asm/uaccess_32.h:211:26: error: call to
> ‘copy_from_user_overflow’ declared with attribute error: copy_from_user()
> buffer size is not provably correct
>
> if built with W=1 due to a missing parameter size validation.
>
> Signed-off-by: Guenter Roeck <linux@...ck-us.net>
This change is correct, but please fix this by simply moving the:
/* Allow the struct to grow and fill in as much as possible */
len = min_t(size_t, len, sizeof(sas));
line higher up in the function.
And I also prefer this because:
something testing sizeof(foo);
if (copy_from_user(..., ..., sizeof(foo)))
must easier to audit and validate, especially in patch form.
Otherwise I have to bring the code into an editor and read the whole
function just to make sure you got the type correct.
Thanks.
Powered by blists - more mailing lists