vlib: fix old nodes vector overflow in refork 33/21933/4
authorBenoît Ganne <bganne@cisco.com>
Fri, 30 Aug 2019 14:20:12 +0000 (16:20 +0200)
committerDave Barach <openvpp@barachs.net>
Mon, 30 Sep 2019 16:35:15 +0000 (16:35 +0000)
Type: fix

Change-Id: I81c4cf0ce87288bb2d3c7b9f31e9419290d588b4
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vlib/threads.c

index 49b6e81..7454d5a 100644 (file)
@@ -1060,11 +1060,7 @@ vlib_worker_thread_node_refork (void)
     clib_mem_alloc_no_fail (vec_len (nm->nodes) * sizeof (*new_n_clone));
   for (j = 0; j < vec_len (nm->nodes); j++)
     {
-      vlib_node_t *old_n_clone;
-      vlib_node_t *new_n;
-
-      new_n = nm->nodes[j];
-      old_n_clone = old_nodes_clone[j];
+      vlib_node_t *new_n = nm->nodes[j];
 
       clib_memcpy_fast (new_n_clone, new_n, sizeof (*new_n));
       /* none of the copied nodes have enqueue rights given out */
@@ -1080,6 +1076,7 @@ vlib_worker_thread_node_refork (void)
        }
       else
        {
+         vlib_node_t *old_n_clone = old_nodes_clone[j];
          /* Copy stats if the old data is valid */
          clib_memcpy_fast (&new_n_clone->stats_total,
                            &old_n_clone->stats_total,