vlib: fix counter_index check 92/39992/3
authorlijinhui <lijh_7@chinatelecom.cn>
Thu, 22 Feb 2024 03:16:10 +0000 (11:16 +0800)
committerDamjan Marion <dmarion@0xa5.net>
Mon, 1 Apr 2024 17:57:58 +0000 (17:57 +0000)
Ensure counter index is valid before using it to lookup
the counter.

Type: fix
Change-Id: I423c7a6aa6b65f6367b18d8e99cf40f52e06b416
Signed-off-by: lijinhui <lijh_7@chinatelecom.cn>
src/vlib/drop.c

index 66eb98f..3fda1d9 100644 (file)
@@ -93,10 +93,12 @@ format_error_trace (u8 * s, va_list * va)
   u32 i;
 
   error_node = vlib_get_node (vm, vlib_error_get_node (&vm->node_main, e[0]));
-  i = counter_index (vm, vlib_error_get_code (&vm->node_main, e[0])) +
-    error_node->error_heap_index;
+  i = counter_index (vm, vlib_error_get_code (&vm->node_main, e[0]));
   if (i != CLIB_U32_MAX)
-    s = format (s, "%v: %s", error_node->name, em->counters_heap[i].desc);
+    {
+      i += error_node->error_heap_index;
+      s = format (s, "%v: %s", error_node->name, em->counters_heap[i].desc);
+    }
 
   return s;
 }