From 43f3d03ddb7991f2646bc0a5838022bf464fd3d8 Mon Sep 17 00:00:00 2001 From: Angelo Athanassopoulos Date: Fri, 28 Oct 2022 13:24:25 +0200 Subject: [PATCH] PSEA - IEI DNN - protect code from a bad DNN length received from the network --- .../NAS/COMMON/ESM/MSG/PduSessionEstablishmentAccept.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openair3/NAS/COMMON/ESM/MSG/PduSessionEstablishmentAccept.c b/openair3/NAS/COMMON/ESM/MSG/PduSessionEstablishmentAccept.c index 67c58f1e85..367fa0a71d 100644 --- a/openair3/NAS/COMMON/ESM/MSG/PduSessionEstablishmentAccept.c +++ b/openair3/NAS/COMMON/ESM/MSG/PduSessionEstablishmentAccept.c @@ -169,10 +169,14 @@ void capture_pdu_session_establishment_accept_msg(uint8_t *buffer, uint32_t msg_ psea_msg.dnn_ie.dnn_length = *(buffer + offset++); char apn[APN_MAX_LEN]; - for (int i = 0 ; i < psea_msg.dnn_ie.dnn_length ; ++i) - apn[i] = *(buffer + offset + i); + if(psea_msg.dnn_ie.dnn_length <= APN_MAX_LEN && + psea_msg.dnn_ie.dnn_length >= APN_MIN_LEN) { + for (int i = 0 ; i < psea_msg.dnn_ie.dnn_length ; ++i) + apn[i] = *(buffer + offset + i); + LOG_T(NAS, "PDU SESSION ESTABLISHMENT ACCEPT - APN: %s\n", apn); + } else + LOG_E(NAS, "PDU SESSION ESTABLISHMENT ACCEPT - DNN IE has invalid length\n"); - LOG_T(NAS, "PDU SESSION ESTABLISHMENT ACCEPT - APN: %s\n", apn); offset += psea_msg.dnn_ie.dnn_length; psea_iei = *(buffer + offset++); break;