l2tp: Fix PPP header erasure and memory leak
Copy user data after PPP framing header. This prevents erasure of the added PPP header and avoids leaking two bytes of uninitialised memory at the end of skb's data buffer. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4f5474e7fd
commit
55b92b7a11
1 changed files with 2 additions and 2 deletions
|
@ -346,12 +346,12 @@ static int pppol2tp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msgh
|
||||||
skb_put(skb, 2);
|
skb_put(skb, 2);
|
||||||
|
|
||||||
/* Copy user data into skb */
|
/* Copy user data into skb */
|
||||||
error = memcpy_fromiovec(skb->data, m->msg_iov, total_len);
|
error = memcpy_fromiovec(skb_put(skb, total_len), m->msg_iov,
|
||||||
|
total_len);
|
||||||
if (error < 0) {
|
if (error < 0) {
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
goto error_put_sess_tun;
|
goto error_put_sess_tun;
|
||||||
}
|
}
|
||||||
skb_put(skb, total_len);
|
|
||||||
|
|
||||||
l2tp_xmit_skb(session, skb, session->hdr_len);
|
l2tp_xmit_skb(session, skb, session->hdr_len);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue