From 097d78cab146e0197972ba06c076d4af682c27c0 Mon Sep 17 00:00:00 2001 From: Dong Anyuan <donganyuan@cn.fujitsu.com> Date: Thu, 20 Jun 2019 10:51:06 +0900 Subject: [PATCH] Fix Coverity Scan CID 300393 (Variable copy going out of scope leaks the storage it points to.) --- .../MAC/flexran_agent_mac_internal.c | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c index 2a7d1fe186..890067aab9 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c @@ -555,6 +555,74 @@ Protocol__FlexDlCsi * copy_csi_report(Protocol__FlexDlCsi * original) { return copy; error: + if (copy != NULL) { + if ((copy->p11csi != NULL) && (copy->p11csi->wb_cqi != NULL)) { + free(copy->p11csi->wb_cqi); + copy->p11csi->wb_cqi = NULL; + } + if (copy->p21csi != NULL) { + if (copy->p21csi->wb_cqi != NULL) { + free(copy->p21csi->wb_cqi); + copy->p21csi->wb_cqi = NULL; + } + if (copy->p21csi->sb_cqi != NULL) { + free(copy->p21csi->sb_cqi); + copy->p21csi->sb_cqi = NULL; + } + } + if (copy->a12csi != NULL) { + if (copy->a12csi->wb_cqi != NULL) { + free(copy->a12csi->wb_cqi); + copy->a12csi->wb_cqi = NULL; + } + if (copy->a12csi->sb_pmi != NULL) { + free(copy->a12csi->sb_pmi); + copy->a12csi->sb_pmi = NULL; + } + } + if (copy->a22csi != NULL) { + if (copy->a22csi->wb_cqi != NULL) { + free(copy->a22csi->wb_cqi); + copy->a22csi->wb_cqi = NULL; + } + if (copy->a22csi->sb_cqi != NULL) { + free(copy->a22csi->sb_cqi); + copy->a22csi->sb_cqi = NULL; + } + if (copy->a22csi->sb_list != NULL) { + free(copy->a22csi->sb_list); + copy->a22csi->sb_list = NULL; + } + } + if ((copy->a20csi != NULL) && (copy->a20csi->sb_list != NULL)) { + free(copy->a20csi->sb_list); + copy->a20csi->sb_list = NULL; + } + if ((copy->a30csi != NULL) && (copy->a30csi->sb_cqi != NULL)) { + free(copy->a30csi->sb_cqi); + copy->a30csi->sb_cqi = NULL; + } + if (copy->a31csi != NULL) { + if (copy->a31csi->wb_cqi != NULL) { + free(copy->a31csi->wb_cqi); + copy->a31csi->wb_cqi = NULL; + } + if (copy->a31csi->sb_cqi != NULL) { + for (i = 0; i < copy->a31csi->n_sb_cqi; i++) { + if (copy->a31csi->sb_cqi[i] != NULL) { + if (copy->a31csi->sb_cqi[i]->sb_cqi != NULL) { + free(copy->a31csi->sb_cqi[i]->sb_cqi); + } + free(copy->a31csi->sb_cqi[i]); + } + } + free(copy->a31csi->sb_cqi); + copy->a31csi->sb_cqi = NULL; + } + } + free(copy); + copy = NULL; + } return NULL; } -- GitLab