diff --git a/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c b/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c index 50b66845c6..cb12e5dc6c 100644 --- a/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c +++ b/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c @@ -94,7 +94,7 @@ int decode_pdu_session_establishment_accept_msg(pdu_session_establishment_accept { qos_rules->rule[0] = decode_qos_rule(curPtr); rules_tot_len += get_len_qos_rule(&qos_rules->rule[0]); - curPtr += rules_tot_len; + curPtr += get_len_qos_rule(&qos_rules->rule[0]); } // Session-AMBR (M) psea_msg->sess_ambr.length = *curPtr++; diff --git a/openair3/NAS/NR_UE/nr_nas_msg.c b/openair3/NAS/NR_UE/nr_nas_msg.c index 5d5f7a3e24..b9b90ab339 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg.c +++ b/openair3/NAS/NR_UE/nr_nas_msg.c @@ -1142,7 +1142,12 @@ static void handle_pdu_session_accept(uint8_t *pdu_buffer, uint32_t msg_length) LOG_E(NAS, "decode_pdu_session_establishment_accept_msg failure\n"); // process PDU Session - process_pdu_session_addr(&msg); + + if (msg.pdu_addr_ie.pdu_length) + process_pdu_session_addr(&msg); + else + LOG_W(NAS, "Optional PDU Address IE was not provided\n"); + set_qfi_pduid(msg.qos_rules.rule->qfi, sm_header.pdu_session_id); }