diff --git a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
index dfc50683ff51baa5890263628066ee780e63ef39..aa7a402f2b1ce6cf1cf36998019d7a6e859d642b 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
@@ -412,8 +412,10 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
         if (neigh_meas->n_eutra_meas > 0){
           
           eutra_meas = malloc(sizeof(Protocol__FlexEutraMeasurements) * neigh_meas->n_eutra_meas);
-          if (eutra_meas == NULL)
+          if (eutra_meas == NULL) {
+            free(neigh_meas);
             goto error;
+          }
           
           for (int j = 0; j < neigh_meas->n_eutra_meas; j++ ){
 
@@ -423,6 +425,7 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
                   free(eutra_meas[k]);
                 }
                 free(eutra_meas);
+                free(neigh_meas);
                 goto error;
               }
 
@@ -453,6 +456,8 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
 
            rrc_measurements->neigh_meas = neigh_meas;
        
+        } else {
+           free(neigh_meas);
         }
 
       	 ue_report[i]->rrc_measurements = rrc_measurements;