summaryrefslogtreecommitdiffstats
path: root/pptp-verify-sockaddr_len-in-pptp_bind-and-pptp_conne.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2015-12-17 08:16:06 -0500
committerJosh Boyer <jwboyer@fedoraproject.org>2015-12-17 08:22:07 -0500
commitd0296447ec12e60e0b165c1b0fe8738464d5e061 (patch)
tree3e3b775872474a650a0e032114ef9ce38bc71cdf /pptp-verify-sockaddr_len-in-pptp_bind-and-pptp_conne.patch
parent05a26637dfc7e3cd0b673b50a2c6694672377615 (diff)
downloadkernel-d0296447ec12e60e0b165c1b0fe8738464d5e061.tar.gz
kernel-d0296447ec12e60e0b165c1b0fe8738464d5e061.tar.xz
kernel-d0296447ec12e60e0b165c1b0fe8738464d5e061.zip
CVE-2015-8569 info leak from getsockname (rhbz 1292045 1292047)
Diffstat (limited to 'pptp-verify-sockaddr_len-in-pptp_bind-and-pptp_conne.patch')
-rw-r--r--pptp-verify-sockaddr_len-in-pptp_bind-and-pptp_conne.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/pptp-verify-sockaddr_len-in-pptp_bind-and-pptp_conne.patch b/pptp-verify-sockaddr_len-in-pptp_bind-and-pptp_conne.patch
new file mode 100644
index 000000000..b891c5211
--- /dev/null
+++ b/pptp-verify-sockaddr_len-in-pptp_bind-and-pptp_conne.patch
@@ -0,0 +1,39 @@
+From 16c5a158e97d5b1f6c8bf86b006c1349f025d4e0 Mon Sep 17 00:00:00 2001
+From: WANG Cong <xiyou.wangcong@gmail.com>
+Date: Mon, 14 Dec 2015 13:48:36 -0800
+Subject: [PATCH] pptp: verify sockaddr_len in pptp_bind() and pptp_connect()
+
+Reported-by: Dmitry Vyukov <dvyukov@gmail.com>
+Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/ppp/pptp.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/drivers/net/ppp/pptp.c b/drivers/net/ppp/pptp.c
+index fc69e41d0950..597c53e0a2ec 100644
+--- a/drivers/net/ppp/pptp.c
++++ b/drivers/net/ppp/pptp.c
+@@ -419,6 +419,9 @@ static int pptp_bind(struct socket *sock, struct sockaddr *uservaddr,
+ struct pptp_opt *opt = &po->proto.pptp;
+ int error = 0;
+
++ if (sockaddr_len < sizeof(struct sockaddr_pppox))
++ return -EINVAL;
++
+ lock_sock(sk);
+
+ opt->src_addr = sp->sa_addr.pptp;
+@@ -440,6 +443,9 @@ static int pptp_connect(struct socket *sock, struct sockaddr *uservaddr,
+ struct flowi4 fl4;
+ int error = 0;
+
++ if (sockaddr_len < sizeof(struct sockaddr_pppox))
++ return -EINVAL;
++
+ if (sp->sa_protocol != PX_PROTO_PPTP)
+ return -EINVAL;
+
+--
+2.5.0
+