vcl: fix use-after-free

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>
(cherry picked from commit 38ab5672b599df8ef201ca6733c9b008c37fdfa3)
This commit is contained in:
Benoît Ganne 2020-04-22 19:14:03 +02:00 committed by Andrew Yourtchenko
parent 2c801f7ffb
commit 0115d1b511

View File

@ -1103,12 +1103,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