Commit 3ed5f415 authored by Gavrilov Ilia's avatar Gavrilov Ilia Committed by David S. Miller

net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function

The 'len' variable can't be negative when assigned the result of
'min_t' because all 'min_t' parameters are cast to unsigned int,
and then the minimum one is chosen.

To fix the logic, check 'len' as read from 'optlen',
where the types of relevant variables are (signed) int.

Fixes: ab7ac4eb ("kcm: Kernel Connection Multiplexor module")
Signed-off-by: default avatarGavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4bb3ba7b
...@@ -1153,10 +1153,11 @@ static int kcm_getsockopt(struct socket *sock, int level, int optname, ...@@ -1153,10 +1153,11 @@ static int kcm_getsockopt(struct socket *sock, int level, int optname,
if (get_user(len, optlen)) if (get_user(len, optlen))
return -EFAULT; return -EFAULT;
len = min_t(unsigned int, len, sizeof(int));
if (len < 0) if (len < 0)
return -EINVAL; return -EINVAL;
len = min_t(unsigned int, len, sizeof(int));
switch (optname) { switch (optname) {
case KCM_RECV_DISABLE: case KCM_RECV_DISABLE:
val = kcm->rx_disabled; val = kcm->rx_disabled;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment