ip: reassembly: fix one possible use-after-free
[vpp.git] / src / vnet / ip / reass / ip4_full_reass.c
index 0828d3b..4d578c5 100644 (file)
@@ -482,15 +482,15 @@ again:
   now = vlib_time_now (vm);
   if (!clib_bihash_search_16_8 (&rm->hash, &kv->kv, &kv->kv))
     {
+      if (vm->thread_index != kv->v.memory_owner_thread_index)
+       {
+         *do_handoff = 1;
+         return NULL;
+       }
       reass =
        pool_elt_at_index (rm->per_thread_data
                           [kv->v.memory_owner_thread_index].pool,
                           kv->v.reass_index);
-      if (vm->thread_index != reass->memory_owner_thread_index)
-       {
-         *do_handoff = 1;
-         return reass;
-       }
 
       if (now > reass->last_heard + rm->timeout)
        {