From d23d39cc012e5b1075a2323d6e940ae5ad43de46 Mon Sep 17 00:00:00 2001 From: John Lo Date: Thu, 13 Sep 2018 15:08:08 -0400 Subject: Fix memory leak in API/CLI to create/modify SR policies The segment list vector built by the API/CLI is not freed after SR policy creation or modification. Change-Id: If439005481cada6c6af7cb560fe7a4381dd49384 Signed-off-by: John Lo --- src/vnet/srv6/sr_api.c | 2 ++ src/vnet/srv6/sr_policy_rewrite.c | 2 ++ 2 files changed, 4 insertions(+) (limited to 'src/vnet/srv6') diff --git a/src/vnet/srv6/sr_api.c b/src/vnet/srv6/sr_api.c index 17d4821ec1d..c37923f7b01 100644 --- a/src/vnet/srv6/sr_api.c +++ b/src/vnet/srv6/sr_api.c @@ -114,6 +114,7 @@ vl_api_sr_policy_add_t_handler (vl_api_sr_policy_add_t * mp) segments, ntohl (mp->sids.weight), mp->type, ntohl (mp->fib_table), mp->is_encap); + vec_free (segments); REPLY_MACRO (VL_API_SR_POLICY_ADD_REPLY); } @@ -147,6 +148,7 @@ vl_api_sr_policy_mod_t_handler (vl_api_sr_policy_mod_t * mp) mp->operation, segments, ntohl (mp->sl_index), ntohl (mp->sids.weight)); + vec_free (segments); REPLY_MACRO (VL_API_SR_POLICY_MOD_REPLY); } diff --git a/src/vnet/srv6/sr_policy_rewrite.c b/src/vnet/srv6/sr_policy_rewrite.c index ad73d29d518..62ce224cd8e 100755 --- a/src/vnet/srv6/sr_policy_rewrite.c +++ b/src/vnet/srv6/sr_policy_rewrite.c @@ -886,6 +886,7 @@ sr_policy_command_fn (vlib_main_t * vm, unformat_input_t * input, rv = sr_policy_add (&bsid, segments, weight, (is_spray ? SR_POLICY_TYPE_SPRAY : SR_POLICY_TYPE_DEFAULT), fib_table, is_encap); + vec_free (segments); } else if (is_del) rv = sr_policy_del ((sr_policy_index != (u32) ~ 0 ? NULL : &bsid), @@ -903,6 +904,7 @@ sr_policy_command_fn (vlib_main_t * vm, unformat_input_t * input, rv = sr_policy_mod ((sr_policy_index != (u32) ~ 0 ? NULL : &bsid), sr_policy_index, fib_table, operation, segments, sl_index, weight); + vec_free (segments); } switch (rv) -- cgit 1.2.3-korg