]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
tipc: fix double-free in tipc_buf_append()
authorLee Jones <lee@kernel.org>
Tue, 21 Apr 2026 12:45:26 +0000 (13:45 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 23 Apr 2026 18:45:01 +0000 (11:45 -0700)
commitd293ca716e7d5dffdaecaf6b9b2f857a33dc3d3a
treeb261e1cfb448730e9607bf79f4e5f18a1e798a38
parent864ba40c80edae2b98f47d46f2c39399126aa3d6
tipc: fix double-free in tipc_buf_append()

tipc_msg_validate() can potentially reallocate the skb it is validating,
freeing the old one.  In tipc_buf_append(), it was being called with a
pointer to a local variable which was a copy of the caller's skb
pointer.

If the skb was reallocated and validation subsequently failed, the error
handling path would free the original skb pointer, which had already
been freed, leading to double-free.

Fix this by checking if head now points to a newly allocated reassembled
skb.  If it does, reassign *headbuf for later freeing operations.

Fixes: d618d09a68e4 ("tipc: enforce valid ratio between skb truesize and contents")
Suggested-by: Tung Nguyen <tung.quang.nguyen@est.tech>
Signed-off-by: Lee Jones <lee@kernel.org>
Reviewed-by: Tung Nguyen <tung.quang.nguyen@est.tech>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/tipc/msg.c