summaryrefslogtreecommitdiffstats
path: root/src/vnet/fib
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2019-02-14 14:58:40 +0000
committerNeale Ranns <nranns@cisco.com>2019-02-20 08:53:15 +0000
commit4c696abc8cf185ef18ed2baeb06304affee5ab39 (patch)
tree91e1ed3a8af53ccfdc8c37124074011778a89356 /src/vnet/fib
parentc01d7488f2b8ddf847e44c9b957df2de1f0c968d (diff)
FIB: pass a copy the walk context
since it can realloc when new ctx are added. If not we can get some nasty memory corruption. Change-Id: I617709c3013acbcb8aee07dc147894f0de896555 Signed-off-by: Neale Ranns <nranns@cisco.com> (cherry picked from commit 58085f2f6757e464196b283cc8335ab5cf34a012)
Diffstat (limited to 'src/vnet/fib')
-rw-r--r--src/vnet/fib/fib_walk.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/vnet/fib/fib_walk.c b/src/vnet/fib/fib_walk.c
index 64c2527b7b6..a2674562b3b 100644
--- a/src/vnet/fib/fib_walk.c
+++ b/src/vnet/fib/fib_walk.c
@@ -363,7 +363,9 @@ fib_walk_advance (fib_node_index_t fwi)
while (ii < n_ctxs)
{
- wrc = fib_node_back_walk_one(&sibling, &fwalk->fw_ctx[ii]);
+ fib_node_back_walk_ctx_t ctx = fwalk->fw_ctx[ii];
+
+ wrc = fib_node_back_walk_one(&sibling, &ctx);
ii++;
fwalk = fib_walk_get(fwi);