]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfrm_user: fix info leak in build_mapping()
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Apr 2026 15:33:03 +0000 (17:33 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Tue, 7 Apr 2026 08:36:37 +0000 (10:36 +0200)
struct xfrm_usersa_id has a one-byte padding hole after the proto
field, which ends up never getting set to zero before copying out to
userspace.  Fix that up by zeroing out the whole structure before
setting individual variables.

Fixes: 3a2dfbe8acb1 ("xfrm: Notify changes in UDP encapsulation via netlink")
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Simon Horman <horms@kernel.org>
Assisted-by: gregkh_clanker_t1000
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_user.c

index a779590c985a544b8d9b3940760e457f407e56da..baa43c325da20109d6308beae4d17c84b35f44e4 100644 (file)
@@ -4172,6 +4172,7 @@ static int build_mapping(struct sk_buff *skb, struct xfrm_state *x,
 
        um = nlmsg_data(nlh);
 
+       memset(&um->id, 0, sizeof(um->id));
        memcpy(&um->id.daddr, &x->id.daddr, sizeof(um->id.daddr));
        um->id.spi = x->id.spi;
        um->id.family = x->props.family;