Fix pppol2tp getsockname()
Subsystems (3)
PATCH 1/1 Fix pppol2tp getsockname()
While testing L2TP functionality, I came across a bug in getsockname(). The IP address returned within the pppol2tp_addr's addr memember was not being set to the IP address in use. This bug is caused by using inet_sk() on the wrong socket (the L2TP socket rather than the underlying UDP socket), and was likely introduced during the addition of L2TPv3 support.
--- net/l2tp/l2tp_ppp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
net/l2tp/l2tp_ppp.c +1 -1
@@ -915,7 +915,7 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr, goto end_put_sess; } - inet =inet_sk (sk); + inet =inet_sk (tunnel->sock);if (tunnel->version ==2 ) {struct sockaddr_pppol2tp sp; len =sizeof (sp);
Signature · 1 line
1.7.4.1
David Miller
maintainerFrom: Benjamin LaHaise <[email protected]>
Date: Sun, 18 Mar 2012 23:15:34 -0400
Quoted 6 lines
While testing L2TP functionality, I came across a bug in
getsockname(). The IP address returned within the pppol2tp_addr's addr memember was not being set to the IP address in use. This bug is caused by usinginet_sk()on the wrong socket (the L2TP socket rather than the underlying UDP socket), and was likely introduced during the addition of L2TPv3 support.
Please resubmit this freshly with a proper signoff.
James Chapman
maintainerQuoted 15 lines · Benjamin LaHaise
While testing L2TP functionality, I came across a bug in
getsockname(). The IP address returned within the pppol2tp_addr's addr memember was not being set to the IP address in use. This bug is caused by usinginet_sk()on the wrong socket (the L2TP socket rather than the underlying UDP socket), and was likely introduced during the addition of L2TPv3 support.--- net/l2tp/l2tp_ppp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)net/l2tp/l2tp_ppp.c +0
-0
net/l2tp/l2tp_ppp.c static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr, · line 921
Quoted 8 lines
net/l2tp/l2tp_ppp.c +1
-1@@ -915,7 +915,7 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr, goto end_put_sess; } - inet =inet_sk (sk); + inet =inet_sk (tunnel->sock);if (tunnel->version ==2 ) {struct sockaddr_pppol2tp sp; len =sizeof (sp);
The patch is incorrect.
This is supposed to return the socket info of the pppol2tp socket, not the tunnel socket. It is used by pppd's pppol2tp plugin to check that the fd supplied is the right socket type.
Signature · 4 lines
James Chapman Katalix Systems Ltd http://www.katalix.com Catalysts for your Embedded Linux software development
James Chapman
maintainerQuoted 27 lines · James Chapman
Quoted 15 lines · Benjamin LaHaise
While testing L2TP functionality, I came across a bug in
getsockname(). The IP address returned within the pppol2tp_addr's addr memember was not being set to the IP address in use. This bug is caused by usinginet_sk()on the wrong socket (the L2TP socket rather than the underlying UDP socket), and was likely introduced during the addition of L2TPv3 support.--- net/l2tp/l2tp_ppp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)net/l2tp/l2tp_ppp.c +0
-0net/l2tp/l2tp_ppp.c static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr, · line 921
Quoted 8 lines
net/l2tp/l2tp_ppp.c +1
-1@@ -915,7 +915,7 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr, goto end_put_sess; } - inet =inet_sk (sk); + inet =inet_sk (tunnel->sock);if (tunnel->version ==2 ) {struct sockaddr_pppol2tp sp; len =sizeof (sp);The patch is incorrect.
Quoted 3 lines
This is supposed to return the socket info of the pppol2tp socket, not the tunnel socket. It is used by pppd's pppol2tp plugin to check that the fd supplied is the right socket type.
Sorry, my mistake. This patch is fine.