From 054697598f97be70d9244c604db44d1ea230c133 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Fri, 21 Jun 2024 13:59:48 +0200 Subject: [PATCH] Revert "udp: Make rport calculation more local" This reverts commit c80fa6a6bb4415ad48f9e11424310875d0d99bc7, as it reintroduces the issue fixed by commit 1e6f92b995a9 ("udp: Fix 16-bit overflow in udp_invert_portmap()"). Reported-by: Laurent Jacquot Link: https://bugs.passt.top/show_bug.cgi?id=80 Signed-off-by: Stefano Brivio Reviewed-by: David Gibson --- udp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/udp.c b/udp.c index e79ca93..8181900 100644 --- a/udp.c +++ b/udp.c @@ -279,9 +279,10 @@ static void udp_invert_portmap(struct udp_fwd_ports *fwd) "Forward and reverse delta arrays must have same size"); for (i = 0; i < ARRAY_SIZE(fwd->f.delta); i++) { in_port_t delta = fwd->f.delta[i]; + in_port_t rport = i + delta; if (delta) - fwd->rdelta[i + delta] = NUM_PORTS - delta; + fwd->rdelta[rport] = NUM_PORTS - delta; } }