vcl: fix use-after-free 47/26647/3
authorBenoît Ganne <bganne@cisco.com>
Wed, 22 Apr 2020 17:14:03 +0000 (19:14 +0200)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 22 Apr 2020 18:42:52 +0000 (18:42 +0000)
Make sure we disconnect from vlib prior to free-ing the last worker, as
we'll need to access it.

Type: fix

Change-Id: Id5bdd17f0f5efa1ce52021b4270eb4f1e95cc61d
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vcl/vppcom.c

index 186b084..579cbc1 100644 (file)
@@ -1224,12 +1224,13 @@ vppcom_app_destroy (void)
 
   /* *INDENT-OFF* */
   pool_foreach (wrk, vcm->workers, ({
+    if (pool_elts (vcm->workers) == 1)
+      vl_client_disconnect_from_vlib ();
     vcl_worker_cleanup (wrk, 0 /* notify vpp */ );
   }));
   /* *INDENT-ON* */
 
   vcl_elog_stop (vcm);
-  vl_client_disconnect_from_vlib ();
 
   /*
    * Free the heap and fix vcm