aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Poirier <bpoirier@nvidia.com>2023-12-11 09:07:22 -0500
committerStephen Hemminger <stephen@networkplumber.org>2023-12-22 09:54:23 -0800
commit7418335b4b43de1ed3e9d6f651f5d2cb39f8ee95 (patch)
treeeaddd69186a8fefc920cd5a7b3f205c5acf24663
parentb627c387eb5c9c8ce37af1fc72fdbc30811fc78d (diff)
downloadiproute2-next-7418335b4b43de1ed3e9d6f651f5d2cb39f8ee95.tar.gz
bridge: vni: Guard close_vni_port() call
Currently, the call to open_vni_port() within print_vnifilter_rtm() is written in a way that is safe if there is a RTM_{NEW,DEL,GET}TUNNEL message without any VXLAN_VNIFILTER_ENTRY attribute. However the close_vni_port() call is written in a way that assumes there is always at least one VXLAN_VNIFILTER_ENTRY attribute within every RTM_*TUNNEL message. At this time, this assumption is correct. However, the code should be consistent in its assumptions. Choose the safe approach and fix the asymmetry between the open_vni_port() and close_vni_port() calls by guarding the latter call with a check. Reviewed-by: Petr Machata <petrm@nvidia.com> Tested-by: Petr Machata <petrm@nvidia.com> Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r--bridge/vni.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/bridge/vni.c b/bridge/vni.c
index 8a6ac2458..ca5d2e433 100644
--- a/bridge/vni.c
+++ b/bridge/vni.c
@@ -341,7 +341,9 @@ int print_vnifilter_rtm(struct nlmsghdr *n, void *arg)
print_vni(t, tmsg->ifindex);
}
- close_vni_port();
+
+ if (!first)
+ close_vni_port();
print_string(PRINT_FP, NULL, "%s", _SL_);