forked from luck/tmp_suning_uos_patched
ipv4: check optlen for IP_MULTICAST_IF option
Due to man page of setsockopt, if optlen is not valid, kernel should return -EINVAL. But a simple testcase as following, errno is 0, which means setsockopt is successful. addr.s_addr = inet_addr("192.1.2.3"); setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &addr, 1); printf("errno is %d\n", errno); Xiaotian Feng(dfeng@redhat.com) caught the bug. We fix it firstly checking the availability of optlen and then dealing with the logic like other options. Reported-by: Xiaotian Feng <dfeng@redhat.com> Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com> Acked-by: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8b3f6af863
commit
0915921bde
|
@ -611,6 +611,9 @@ static int do_ip_setsockopt(struct sock *sk, int level,
|
|||
* Check the arguments are allowable
|
||||
*/
|
||||
|
||||
if (optlen < sizeof(struct in_addr))
|
||||
goto e_inval;
|
||||
|
||||
err = -EFAULT;
|
||||
if (optlen >= sizeof(struct ip_mreqn)) {
|
||||
if (copy_from_user(&mreq, optval, sizeof(mreq)))
|
||||
|
|
Loading…
Reference in New Issue
Block a user