提交 cc9a06cd 编写于 作者: P Patrick McHardy 提交者: David S. Miller

[NETLINK]: Fix use-after-free in netlink_recvmsg

The skb given to netlink_cmsg_recv_pktinfo is already freed, move it up
a few lines.

Coverity #948
Signed-off-by: NPatrick McHardy <kaber@trash.net>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 f8dc01f5
...@@ -1194,6 +1194,9 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock, ...@@ -1194,6 +1194,9 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
msg->msg_namelen = sizeof(*addr); msg->msg_namelen = sizeof(*addr);
} }
if (nlk->flags & NETLINK_RECV_PKTINFO)
netlink_cmsg_recv_pktinfo(msg, skb);
if (NULL == siocb->scm) { if (NULL == siocb->scm) {
memset(&scm, 0, sizeof(scm)); memset(&scm, 0, sizeof(scm));
siocb->scm = &scm; siocb->scm = &scm;
...@@ -1205,8 +1208,6 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock, ...@@ -1205,8 +1208,6 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
netlink_dump(sk); netlink_dump(sk);
scm_recv(sock, msg, siocb->scm, flags); scm_recv(sock, msg, siocb->scm, flags);
if (nlk->flags & NETLINK_RECV_PKTINFO)
netlink_cmsg_recv_pktinfo(msg, skb);
out: out:
netlink_rcv_wake(sk); netlink_rcv_wake(sk);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册