Commit 6b4e4506 authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Merge branch 'fix_n2_ho_invalidfrees' into 'fix_n2_handover'

Octet String buffer reference was owned by multiple objects and freed twice

See merge request oai/cn5g/oai-cn5g-amf!201
parents 576e537f 1b1e5dc3
......@@ -221,7 +221,7 @@ bool HandoverCommandMsg::getPDUSessionResourceToReleaseListHOCmd(
//------------------------------------------------------------------------------
void HandoverCommandMsg::setTargetToSource_TransparentContainer(
const OCTET_STRING_t& targetTosource) {
targetToSource_TransparentContainer = targetTosource;
conv::octet_string_copy(targetToSource_TransparentContainer,targetTosource);
Ngap_HandoverCommandIEs_t* ie =
(Ngap_HandoverCommandIEs_t*) calloc(1, sizeof(Ngap_HandoverCommandIEs_t));
......@@ -229,7 +229,8 @@ void HandoverCommandMsg::setTargetToSource_TransparentContainer(
ie->criticality = Ngap_Criticality_reject;
ie->value.present =
Ngap_HandoverCommandIEs__value_PR_TargetToSource_TransparentContainer;
ie->value.choice.TargetToSource_TransparentContainer = targetTosource;
conv::octet_string_copy(ie->value.choice.TargetToSource_TransparentContainer,targetTosource);
int ret = ASN_SEQUENCE_ADD(&handoverCommandIEs->protocolIEs.list, ie);
if (ret != 0) Logger::ngap().error("Encode HandoverType IE error");
}
......
......@@ -352,7 +352,8 @@ void HandoverRequest::setSourceToTarget_TransparentContainer(
ie->criticality = Ngap_Criticality_reject;
ie->value.present =
Ngap_HandoverRequestIEs__value_PR_SourceToTarget_TransparentContainer;
ie->value.choice.SourceToTarget_TransparentContainer = sourceTotarget;
conv::octet_string_copy(ie->value.choice.SourceToTarget_TransparentContainer, sourceTotarget);
int ret = ASN_SEQUENCE_ADD(&handoverRequestIEs->protocolIEs.list, ie);
if (ret != 0)
Logger::ngap().error("Encode SourceToTarget_TransparentContainer IE error");
......
......@@ -20,6 +20,7 @@
*/
#include "HandoverRequestAck.hpp"
#include "conversions.hpp"
#include "logger.hpp"
......@@ -107,7 +108,7 @@ void HandoverRequestAck::setTargetToSource_TransparentContainer(
ie->criticality = Ngap_Criticality_reject;
ie->value.present =
Ngap_HandoverRequestAcknowledgeIEs__value_PR_TargetToSource_TransparentContainer;
ie->value.choice.TargetToSource_TransparentContainer = targetTosource;
conv::octet_string_copy(ie->value.choice.TargetToSource_TransparentContainer, targetTosource);
int ret = ASN_SEQUENCE_ADD(&handoverRequestAckIEs->protocolIEs.list, ie);
if (ret != 0)
Logger::ngap().error(
......@@ -313,9 +314,7 @@ bool HandoverRequestAck::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_reject &&
handoverRequestAckIEs->protocolIEs.list.array[i]->value.present ==
Ngap_HandoverRequestAcknowledgeIEs__value_PR_TargetToSource_TransparentContainer) {
TargetToSource_TransparentContainer =
handoverRequestAckIEs->protocolIEs.list.array[i]
->value.choice.TargetToSource_TransparentContainer;
conv::octet_string_copy(TargetToSource_TransparentContainer, handoverRequestAckIEs->protocolIEs.list.array[i]->value.choice.TargetToSource_TransparentContainer);
} else {
Logger::ngap().error(
"Decoded NGAP TargetToSource_TransparentContainer IE error");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment