aboutsummaryrefslogtreecommitdiff
path: root/net/l2tp
diff options
context:
space:
mode:
authorGravatar Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru> 2024-03-07 14:23:50 +0000
committerGravatar David S. Miller <davem@davemloft.net> 2024-03-11 09:53:22 +0000
commit955e9876ba4ee26eeaab1b13517f5b2c88e73d55 (patch)
treebb2049c1f15e689158a797cee432bb17d53617ab /net/l2tp
parentipmr: fix incorrect parameter validation in the ip_mroute_getsockopt() function (diff)
downloadlinux-955e9876ba4ee26eeaab1b13517f5b2c88e73d55.tar.gz
linux-955e9876ba4ee26eeaab1b13517f5b2c88e73d55.tar.bz2
linux-955e9876ba4ee26eeaab1b13517f5b2c88e73d55.zip
l2tp: fix incorrect parameter validation in the pppol2tp_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: 3557baabf280 ("[L2TP]: PPP over L2TP driver core") Reviewed-by: Tom Parkin <tparkin@katalix.com> Signed-off-by: Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/l2tp')
-rw-r--r--net/l2tp/l2tp_ppp.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
index f011af6601c9..6146e4e67bbb 100644
--- a/net/l2tp/l2tp_ppp.c
+++ b/net/l2tp/l2tp_ppp.c
@@ -1356,11 +1356,11 @@ static int pppol2tp_getsockopt(struct socket *sock, int level, int optname,
if (get_user(len, optlen))
return -EFAULT;
- len = min_t(unsigned int, len, sizeof(int));
-
if (len < 0)
return -EINVAL;
+ len = min_t(unsigned int, len, sizeof(int));
+
err = -ENOTCONN;
if (!sk->sk_user_data)
goto end;