| From bbb49c73a2dea9c5e4badfd0ab36b0b78891ff40 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 27 Jun 2024 14:25:00 -0700 |
| Subject: tcp_metrics: validate source addr length |
| |
| From: Jakub Kicinski <kuba@kernel.org> |
| |
| [ Upstream commit 66be40e622e177316ae81717aa30057ba9e61dff ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/ipv4/tcp_metrics.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c |
| index 7aca12c59c184..b71f94a5932ac 100644 |
| --- a/net/ipv4/tcp_metrics.c |
| +++ b/net/ipv4/tcp_metrics.c |
| @@ -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 |
| */ |
| -- |
| 2.43.0 |
| |