summaryrefslogtreecommitdiffstats
path: root/net/l2tp/l2tp_ip6.c
diff options
context:
space:
mode:
authorMathias Krause <minipli@googlemail.com>2013-04-07 01:51:55 +0000
committerDavid S. Miller <davem@davemloft.net>2013-04-07 16:28:01 -0400
commitb860d3cc62877fad02863e2a08efff69a19382d2 (patch)
treee654b34c09acf71de2864416e5d13cb3cd0c10f3 /net/l2tp/l2tp_ip6.c
parenta5598bd9c087dc0efc250a5221e5d0e6f584ee88 (diff)
downloadlinux-stable-b860d3cc62877fad02863e2a08efff69a19382d2.tar.gz
linux-stable-b860d3cc62877fad02863e2a08efff69a19382d2.tar.bz2
linux-stable-b860d3cc62877fad02863e2a08efff69a19382d2.zip
l2tp: fix info leak in l2tp_ip6_recvmsg()
The L2TP code for IPv6 fails to initialize the l2tp_conn_id member of struct sockaddr_l2tpip6 and therefore leaks four bytes kernel stack in l2tp_ip6_recvmsg() in case msg_name is set. Initialize l2tp_conn_id with 0 to avoid the info leak. Signed-off-by: Mathias Krause <minipli@googlemail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/l2tp/l2tp_ip6.c')
-rw-r--r--net/l2tp/l2tp_ip6.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c
index c74f5a91ff6a..b8a6039314e8 100644
--- a/net/l2tp/l2tp_ip6.c
+++ b/net/l2tp/l2tp_ip6.c
@@ -690,6 +690,7 @@ static int l2tp_ip6_recvmsg(struct kiocb *iocb, struct sock *sk,
lsa->l2tp_addr = ipv6_hdr(skb)->saddr;
lsa->l2tp_flowinfo = 0;
lsa->l2tp_scope_id = 0;
+ lsa->l2tp_conn_id = 0;
if (ipv6_addr_type(&lsa->l2tp_addr) & IPV6_ADDR_LINKLOCAL)
lsa->l2tp_scope_id = IP6CB(skb)->iif;
}