memory leak issues fixed 70/9570/1
authorrajalakshmisv <rajalakshmisv@gmail.com>
Thu, 10 Nov 2022 11:08:11 +0000 (11:08 +0000)
committerrajalakshmisv <rajalakshmisv@gmail.com>
Thu, 10 Nov 2022 11:08:39 +0000 (11:08 +0000)
Signed-off-by: rajalakshmisv <rajalakshmisv@gmail.com>
Change-Id: I01b09cda96e48c1542b654f10e593a33ab183de0

control/rcE2AP.go
control/rcE2SmRc.go
e2ap/wrapper.c
e2sm/wrapper.c

index c2beae3..ed357c4 100644 (file)
@@ -45,10 +45,10 @@ func (c *E2ap) GetControlAckMsg(payload []byte) (decodedMsg *ControlAckMsg, err
         cptr := unsafe.Pointer(&payload[0])
         decodedMsg = &ControlAckMsg{}
         decodedCMsg := C.e2ap_decode_ric_control_acknowledge_message(cptr, C.size_t(len(payload)))
+        defer C.e2ap_free_decoded_ric_control_ack(decodedCMsg)
         if decodedCMsg == nil {
                 return decodedMsg, errors.New("e2ap wrapper is unable to decode indication message due to wrong or invalid payload")
         }
-        defer C.e2ap_free_decoded_ric_control_ack(decodedCMsg)
 
         decodedMsg.RequestID = int32(decodedCMsg.requestorID)
         decodedMsg.InstanceId = int32(decodedCMsg.instanceID)
@@ -66,10 +66,10 @@ func (c *E2ap) GetControlFailureMsg(payload []byte) (decodedMsg *ControlFailureM
         cptr := unsafe.Pointer(&payload[0])
         decodedMsg = &ControlFailureMsg{}
         decodedCMsg := C.e2ap_decode_ric_control_failure_message(cptr, C.size_t(len(payload)))
+        defer C.e2ap_free_decoded_ric_control_failure(decodedCMsg)
         if decodedCMsg == nil {
                 return decodedMsg, errors.New("e2ap wrapper is unable to decode control failure message due to wrong or invalid payload")
         }
-        defer C.e2ap_free_decoded_ric_control_failure(decodedCMsg)
 
         decodedMsg.RequestID = int32(decodedCMsg.requestorID)
         decodedMsg.InstanceId = int32(decodedCMsg.instanceID)
index e2a8498..f72707c 100644 (file)
@@ -117,10 +117,10 @@ func (c *E2sm) GetControlOutcome(buffer []byte) (controlOutcome *ControlOutcomeM
         //ml.MavLog(ml.INFO, lTransId, "Decode Control Outcome: ")
        xapp.Logger.Info("Decode Control Outcome: ")
         decodedMsg := C.e2sm_decode_ric_call_process_outcome(cptr, C.size_t(len(buffer)))
+        defer C.e2sm_free_ric_call_process_outcome(decodedMsg)
         if decodedMsg == nil {
                 return controlOutcome, errors.New("e2sm wrapper is unable to get ControlOutcome due to wrong or invalid input")
         }
-        defer C.e2sm_free_ric_call_process_outcome(decodedMsg)
         //ml.MavLog(ml.INFO, lTransId, "Decoded Control Outcome: ")
        controlOutcome.ControlOutcomeType = int32(decodedMsg.ric_controlOutcome_formats.present)
        if controlOutcome.ControlOutcomeType == 1 {
index d7a6395..729f8d0 100644 (file)
@@ -188,6 +188,8 @@ RICControlAcknowledge* e2ap_decode_ric_control_acknowledge_message(void *buffer,
                     msg->ricControlOutComeSize = ricControlOutComeSize;
                 }
        }
+                if(pdu != NULL)
+                       ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu);
                return msg;
        }
         }
@@ -279,7 +281,10 @@ RICControlFailure* e2ap_decode_ric_control_failure_message(void *buffer, size_t
 
                }
         }
-        return msg;
+                if(pdu != NULL)
+                     ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu);
+
+                return msg;
         }
         }
 
index c1d0be6..1847da2 100755 (executable)
@@ -15,10 +15,14 @@ ssize_t e2sm_encode_ric_control_header(void *buffer, size_t buf_size,struct uEID
         }
 
         controlHeaderIE->ric_controlHeader_formats.present = E2SM_RC_ControlHeader__ric_controlHeader_formats_PR_controlHeader_Format1;
-        E2SM_RC_ControlHeader_Format1_t  *controlHeader_Fmt1 = (E2SM_RC_ControlHeader_Format1_t *)calloc(1, sizeof(E2SM_RC_ControlHeader_Format1_t));
+        //E2SM_RC_ControlHeader_Format1_t  *controlHeader_Fmt1 = (E2SM_RC_ControlHeader_Format1_t *)calloc(1, sizeof(E2SM_RC_ControlHeader_Format1_t));
+       E2SM_RC_ControlHeader_Format1_t  *controlHeader_Fmt1 = NULL;
+       controlHeaderIE->ric_controlHeader_formats.choice.controlHeader_Format1 = (E2SM_RC_ControlHeader_Format1_t *)calloc(1, sizeof(E2SM_RC_ControlHeader_Format1_t));
+       controlHeader_Fmt1 = controlHeaderIE->ric_controlHeader_formats.choice.controlHeader_Format1;
         if(!controlHeader_Fmt1)
         {
                 fprintf(stderr, "alloc E2SM_RC_ControlHeader failed\n");
+               ASN_STRUCT_FREE(asn_DEF_E2SM_RC_ControlHeader, controlHeaderIE);
                 return -1;
         }
        
@@ -89,6 +93,7 @@ ssize_t e2sm_encode_ric_control_header(void *buffer, size_t buf_size,struct uEID
         }
        //f1AP is an array of data
        //int n = sizeof(f1AP)/sizeof(long int);
+
        for(int i =0; i < f1AP_len; i++)
        {
                UEID_GNB_CU_CP_F1AP_ID_Item_t *F1AP_ID_Item = (UEID_GNB_CU_CP_F1AP_ID_Item_t *)calloc (1, sizeof(UEID_GNB_CU_CP_F1AP_ID_Item_t ));
@@ -171,9 +176,7 @@ ssize_t e2sm_encode_nrcgi(NR_CGI_t *nr_cgi, void* plmnIdValue, size_t  plmnId_si
         OCTET_STRING_fromBuf(&nr_cgi->pLMNIdentity,plmnIdValue, plmnId_size);
         //fprintf(stderr, "encodec Plmn Id = %s  plmnIdValue %s and lNRCellId = %lu \n", nr_cgi->pLMNIdentity, plmnIdValue,lNRCellId);
         //fprintf(stderr, "encodec Plmn Id = %s  and lNRCellId = %d \n", nr_cgi->pLMNIdentity,plmnIdValue,lNRCellId);
-       BIT_STRING_t *nr_cell_id = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));
-           if(nr_cell_id)
-           {
+       BIT_STRING_t *nr_cell_id = &nr_cgi->nRCellIdentity ; 
                nr_cell_id->buf = (uint8_t*)calloc(1,5);
                if(nr_cell_id->buf)
                {
@@ -185,9 +188,7 @@ ssize_t e2sm_encode_nrcgi(NR_CGI_t *nr_cgi, void* plmnIdValue, size_t  plmnId_si
                    nr_cell_id->buf[4] = (lNRCellId & 0X000000000F) << 4;
                    nr_cell_id->bits_unused = 4;
 
-                   nr_cgi->nRCellIdentity = *nr_cell_id;
                }
-           }
 
           fprintf(stderr, "showing xer of asn_DEF_NR_CGI NR_CGI_t data\n");
           xer_fprint(stderr, &asn_DEF_NR_CGI, nr_cgi);