ioam: fix coverity warning/NULL dereference 72/34272/2
authorKlement Sekera <ksekera@cisco.com>
Thu, 28 Oct 2021 08:16:09 +0000 (10:16 +0200)
committerDamjan Marion <dmarion@me.com>
Thu, 28 Oct 2021 10:58:13 +0000 (10:58 +0000)
Add a NULL check and missing array index to avoid multiple NULL
derefences.

Runnning:

set ioam ip6 sr-tunnel-select disable

on a fresh VPP no longer crashes.

Type: fix
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: Ia85f92024f3b14ef1c4cdb9fcf794b962cad9422

src/plugins/ioam/ip6/ioam_cache.h

index b85172e..8c1b629 100644 (file)
@@ -608,17 +608,20 @@ ioam_cache_ts_table_destroy (vlib_main_t * vm)
   int i;
 
   /* free pool and hash table */
-  for (i = 0; i < no_of_threads; i++)
+  if (cm->ioam_ts_pool)
     {
-      pool_foreach (entry, cm->ioam_ts_pool[i])
-      {
-       ioam_cache_ts_entry_free (i, entry, cm->error_node_index);
-      }
-      pool_free (cm->ioam_ts_pool[i]);
-      cm->ioam_ts_pool = 0;
-      tw_timer_wheel_free_16t_2w_512sl (&cm->timer_wheels[i]);
+      for (i = 0; i < no_of_threads; i++)
+       {
+         pool_foreach (entry, cm->ioam_ts_pool[i])
+           {
+             ioam_cache_ts_entry_free (i, entry, cm->error_node_index);
+           }
+         pool_free (cm->ioam_ts_pool[i]);
+         cm->ioam_ts_pool[i] = 0;
+         tw_timer_wheel_free_16t_2w_512sl (&cm->timer_wheels[i]);
+       }
+      vec_free (cm->ioam_ts_pool);
     }
-  vec_free (cm->ioam_ts_pool);
   return (0);
 }