+8
−2
Loading
xfrm_get_ae() allocates the reply skb with xfrm_aevent_msgsize(), then build_aevent() appends attributes including XFRMA_IF_ID when x->if_id is set. xfrm_aevent_msgsize() does not include space for XFRMA_IF_ID. For states with if_id, build_aevent() can fail with -EMSGSIZE and hit BUG_ON(err < 0) in xfrm_get_ae(), turning a malformed netlink interaction into a kernel panic. Account XFRMA_IF_ID in the size calculation unconditionally and replace the BUG_ON with normal error unwinding. Fixes: 7e652640 ("xfrm: Add a new lookup key to match xfrm interfaces.") Reported-by:Keenan Dong <keenanat2000@gmail.com> Signed-off-by:
Keenan Dong <keenanat2000@gmail.com> Signed-off-by:
Steffen Klassert <steffen.klassert@secunet.com>