[PATCH net-next] tipc: Fix NULL pointer dereference in __tipc_sendstream()

Subsystems: networking [general], the rest, tipc network layer

STALE2254d

3 messages, 2 authors, 2020-06-01 · open the first message on its own page

[PATCH net-next] tipc: Fix NULL pointer dereference in __tipc_sendstream()

From: YueHaibing <hidden>
Date: 2020-05-28 14:38:48

tipc_sendstream() may send zero length packet, then tipc_msg_append()
do not alloc skb, skb_peek_tail() will get NULL, msg_set_ack_required
will trigger NULL pointer dereference.

Reported-by: syzbot+8eac6d030e7807c21d32@syzkaller.appspotmail.com
Fixes: 0a3e060f340d ("tipc: add test for Nagle algorithm effectiveness")
Signed-off-by: YueHaibing <redacted>
---
 net/tipc/socket.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index d6b67d07d22e..2943561399f1 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -1588,8 +1588,12 @@ static int __tipc_sendstream(struct socket *sock, struct msghdr *m, size_t dlen)
 				tsk->pkt_cnt += skb_queue_len(txq);
 			} else {
 				skb = skb_peek_tail(txq);
-				msg_set_ack_required(buf_msg(skb));
-				tsk->expect_ack = true;
+				if (skb) {
+					msg_set_ack_required(buf_msg(skb));
+					tsk->expect_ack = true;
+				} else {
+					tsk->expect_ack = false;
+				}
 				tsk->msg_acc = 0;
 				tsk->pkt_cnt = 0;
 			}
-- 
2.17.1

Re: [PATCH net-next] tipc: Fix NULL pointer dereference in __tipc_sendstream()

From: David Miller <davem@davemloft.net>
Date: 2020-06-01 18:43:02

From: YueHaibing <redacted>
Date: Thu, 28 May 2020 22:34:07 +0800
tipc_sendstream() may send zero length packet, then tipc_msg_append()
do not alloc skb, skb_peek_tail() will get NULL, msg_set_ack_required
will trigger NULL pointer dereference.

Reported-by: syzbot+8eac6d030e7807c21d32@syzkaller.appspotmail.com
Fixes: 0a3e060f340d ("tipc: add test for Nagle algorithm effectiveness")
Signed-off-by: YueHaibing <redacted>
Can a TIPC expert please review this?

Thank you.

Re: [PATCH net-next] tipc: Fix NULL pointer dereference in __tipc_sendstream()

From: David Miller <davem@davemloft.net>
Date: 2020-06-01 22:35:29

From: YueHaibing <redacted>
Date: Thu, 28 May 2020 22:34:07 +0800
tipc_sendstream() may send zero length packet, then tipc_msg_append()
do not alloc skb, skb_peek_tail() will get NULL, msg_set_ack_required
will trigger NULL pointer dereference.

Reported-by: syzbot+8eac6d030e7807c21d32@syzkaller.appspotmail.com
Fixes: 0a3e060f340d ("tipc: add test for Nagle algorithm effectiveness")
Signed-off-by: YueHaibing <redacted>
I spent some time reading this a few times and the Fixes: commit and
this change looks ok to me so I'm just going to apply this.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help