tcp_metrics: validate source addr length
authorJakub Kicinski <kuba@kernel.org>
Thu, 27 Jun 2024 21:25:00 +0000 (14:25 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 Jul 2024 08:40:36 +0000 (09:40 +0100)
I don't see anything checking that TCP_METRICS_ATTR_SADDR_IPV4
is at least 4 bytes long, and the policy doesn't have an entry
for this attribute at all (neither does it for IPv6 but v6 is
manually validated).

Reviewed-by: Eric Dumazet <edumazet@google.com>
Fixes: 3e7013ddf55a ("tcp: metrics: Allow selective get/del of tcp-metrics based on src IP")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_metrics.c

index e93df98de3f454e9118116c3ca1b19b237ead04f..b01eb6d9441393d46f81c7616676726d4ae725d6 100644 (file)
@@ -619,6 +619,7 @@ static const struct nla_policy tcp_metrics_nl_policy[TCP_METRICS_ATTR_MAX + 1] =
        [TCP_METRICS_ATTR_ADDR_IPV4]    = { .type = NLA_U32, },
        [TCP_METRICS_ATTR_ADDR_IPV6]    = { .type = NLA_BINARY,
                                            .len = sizeof(struct in6_addr), },
+       [TCP_METRICS_ATTR_SADDR_IPV4]   = { .type = NLA_U32, },
        /* Following attributes are not received for GET/DEL,
         * we keep them for reference
         */