diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2017-04-20 06:21:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-04-21 15:19:27 -0400 |
commit | 6f60f438108c66988c944894e5f673ab5d04fbc1 (patch) | |
tree | d1e7d20c0fb58fd57e45270fa68917091c1e942f /net/qrtr | |
parent | 89087c456fb5cb5e534edf1c30568a8baae4c906 (diff) |
net: qrtr: potential use after free in qrtr_sendmsg()
If skb_pad() fails then it frees the skb so we should check for errors.
Fixes: bdabad3e363d ("net: Add Qualcomm IPC router")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/qrtr')
-rw-r--r-- | net/qrtr/qrtr.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index ae5ac175b2be..9da7368b0140 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c | |||
@@ -658,7 +658,9 @@ static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) | |||
658 | } | 658 | } |
659 | 659 | ||
660 | if (plen != len) { | 660 | if (plen != len) { |
661 | skb_pad(skb, plen - len); | 661 | rc = skb_pad(skb, plen - len); |
662 | if (rc) | ||
663 | goto out_node; | ||
662 | skb_put(skb, plen - len); | 664 | skb_put(skb, plen - len); |
663 | } | 665 | } |
664 | 666 | ||