Patchwork Fix pppol2tp getsockname()

login
register
mail settings
Submitter Benjamin LaHaise
Date March 20, 2012, 1:57 p.m.
Message ID <20120320135754.GA30155@kvack.org>
Download mbox | patch
Permalink /patch/147793/
State Accepted
Delegated to: David Miller
Headers show

Comments

Benjamin LaHaise - March 20, 2012, 1:57 p.m.
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.

Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
---
 net/l2tp/l2tp_ppp.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
James Chapman - March 20, 2012, 2:49 p.m.
On 20/03/12 13:57, Benjamin LaHaise wrote:
> 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.
> 
> Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>

Signed-off-by: James Chapman <jchapman@katalix.com>

> ---
>  net/l2tp/l2tp_ppp.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
> index 96bc7a6..9b07191 100644
> --- a/net/l2tp/l2tp_ppp.c
> +++ b/net/l2tp/l2tp_ppp.c
> @@ -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);

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - March 20, 2012, 8:13 p.m.
From: James Chapman <jchapman@katalix.com>
Date: Tue, 20 Mar 2012 14:49:02 +0000

> On 20/03/12 13:57, Benjamin LaHaise wrote:
>> 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.
>> 
>> Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
> 
> Signed-off-by: James Chapman <jchapman@katalix.com>

Applied and queued up for -stable, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
index 96bc7a6..9b07191 100644
--- a/net/l2tp/l2tp_ppp.c
+++ b/net/l2tp/l2tp_ppp.c
@@ -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);