diff --git a/openair2/ENB_APP/flexran_agent_common.c b/openair2/ENB_APP/flexran_agent_common.c index 25fbcfc8e70b78ea6491a28ba84472e24e58c2fe..6c64c3214fda8ff1661e80dd52e64ebcbea1f630 100644 --- a/openair2/ENB_APP/flexran_agent_common.c +++ b/openair2/ENB_APP/flexran_agent_common.c @@ -746,7 +746,13 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F for(int i = 0; i < enb_config_reply_msg->n_cell_config; i++) { cell_conf[i] = malloc(sizeof(Protocol__FlexCellConfig)); - if (!cell_conf[i]) goto error; + if (!cell_conf[i]) { + for (int j = 0; j < i; j++) { + free(cell_conf[j]); + } + free(cell_conf); + goto error; + } protocol__flex_cell_config__init(cell_conf[i]); @@ -768,8 +774,13 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F *msg = malloc(sizeof(Protocol__FlexranMessage)); - if(*msg == NULL) + if(*msg == NULL) { + for (int k = 0; k < enb_config_reply_msg->n_cell_config; k++) { + free(cell_conf[k]); + } + free(cell_conf); goto error; + } protocol__flexran_message__init(*msg); (*msg)->msg_case = PROTOCOL__FLEXRAN_MESSAGE__MSG_ENB_CONFIG_REPLY_MSG;