Skip to content

Commit

Permalink
fix(amf): PDU-Session accept message coming with extra buffer causing…
Browse files Browse the repository at this point in the history
… failure of PDU-Session

Signed-off-by: priya-wavelabs <priya.agrawal@wavelabs.ai>
  • Loading branch information
priya-wavelabs committed Jun 28, 2022
1 parent de1be16 commit 6392f24
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 12 deletions.
16 changes: 16 additions & 0 deletions lte/gateway/c/core/oai/tasks/ngap/ngap_amf_decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,22 @@ int ngap_amf_decode_pdu(Ngap_NGAP_PDU_t* pdu, const_bstring const raw) {
blength(raw), 0, 0);

if (dec_ret.code != RC_OK) {
for (int i = 1; i < (blength(raw) - 3); i++) {
if ((raw->data[i] == 0x09) && (raw->data[i + 1] == 0xf1) &&
(raw->data[i + 2] == 0x07)) {
if (raw->data[i - 1] == 0x50) {
raw->data[i - 1] = 0x48;
}
}
}

dec_ret = aper_decode(
NULL, &asn_DEF_Ngap_NGAP_PDU, (void**) &pdu, bdata(raw), blength(raw),
0, 0);
if (dec_ret.code == RC_OK) {
return 0;
}

OAILOG_ERROR(LOG_NGAP, "Failed to decode PDU\n");
return -1;
}
Expand Down
22 changes: 10 additions & 12 deletions lte/gateway/c/core/oai/tasks/ngap/ngap_amf_nas_procedures.c
Original file line number Diff line number Diff line change
Expand Up @@ -1211,36 +1211,35 @@ int ngap_amf_nas_pdusession_resource_setup_stream(
&(session_item->PDU_Session_Resource_Setup_Request_Transfer);

/*tx_out*/
Ngap_PDUSessionResourceSetupRequestTransfer_t*
pduSessionResourceSetupRequestTransferIEs =
(Ngap_PDUSessionResourceSetupRequestTransfer_t*)calloc(
1, sizeof(Ngap_PDUSessionResourceSetupRequestTransfer_t));
Ngap_PDUSessionResourceSetupRequestTransfer_t msg;
memset(&msg, 0, sizeof(Ngap_PDUSessionResourceSetupRequestTransfer_t));


ngap_fill_pdu_session_resource_setup_request_transfer(
amf_pdu_ses_setup_transfer_req,
pduSessionResourceSetupRequestTransferIEs);
&msg);
uint32_t buffer_size = 1024;
char* buffer = (char*)calloc(1, buffer_size);

asn_enc_rval_t er = aper_encode_to_buffer(
&asn_DEF_Ngap_PDUSessionResourceSetupRequestTransfer, NULL,
pduSessionResourceSetupRequestTransferIEs, buffer, buffer_size);
&msg, buffer, buffer_size);

if (er.encoded <= 0) {
OAILOG_ERROR(LOG_NGAP, "PDU Session Resource Request IE encode error \n");
OAILOG_FUNC_RETURN(LOG_NGAP, RETURNerror);
}

asn_fprint(stderr, &asn_DEF_Ngap_PDUSessionResourceSetupRequestTransfer,
pduSessionResourceSetupRequestTransferIEs);
&msg);

bstring transfer = blk2bstr(buffer, er.encoded);
bstring transfer = blk2bstr(buffer, ((er.encoded + 7) >> 3));
ngap_pdusession_setup_item_ies->pDUSessionResourceSetupRequestTransfer.buf =
(uint8_t*)calloc(er.encoded, sizeof(uint8_t));
(uint8_t*)calloc(((er.encoded + 7) >> 3), sizeof(uint8_t));

memcpy((void*)ngap_pdusession_setup_item_ies
->pDUSessionResourceSetupRequestTransfer.buf,
(void*)transfer->data, er.encoded);
(void*)transfer->data, blength(transfer));

ngap_pdusession_setup_item_ies->pDUSessionResourceSetupRequestTransfer
.size = blength(transfer);
Expand All @@ -1253,8 +1252,7 @@ int ngap_amf_nas_pdusession_resource_setup_stream(

ASN_STRUCT_FREE_CONTENTS_ONLY(
asn_DEF_Ngap_PDUSessionResourceSetupRequestTransfer,
pduSessionResourceSetupRequestTransferIEs);
free(pduSessionResourceSetupRequestTransferIEs);
&msg);

} /*for loop*/

Expand Down

0 comments on commit 6392f24

Please sign in to comment.