diff --git a/openair3/NAS/NR_UE/nr_nas_msg.c b/openair3/NAS/NR_UE/nr_nas_msg.c index f2e3b8dd07..1a88b03205 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg.c +++ b/openair3/NAS/NR_UE/nr_nas_msg.c @@ -1296,8 +1296,13 @@ static void handle_security_mode_command(nr_ue_nas_t *nas, as_nas_info_t *initia } printf("\n"); - /* todo: stream_security_container_delete() is not called anywhere, deal with that */ - nas->security_container = stream_security_container_init(ciphering_algorithm, integrity_algorithm, knas_enc, knas_int); + if (integrity_algorithm != EIA0_ALG_ID) { + nas->security_container = stream_security_container_init(ciphering_algorithm, integrity_algorithm, knas_enc, knas_int); + } else { + LOG_E(NAS, "Rejecting Invalid NULL integrity %d for 5G!\n", + integrity_algorithm); + nas->security_container = NULL; + } /* Handle the invalid container with a reject message */ if(nas->security_container == NULL) { diff --git a/openair3/SECU/secu_defs.c b/openair3/SECU/secu_defs.c index f8edf167df..17e3ca96ec 100644 --- a/openair3/SECU/secu_defs.c +++ b/openair3/SECU/secu_defs.c @@ -118,12 +118,6 @@ stream_security_container_t *stream_security_container_init(int ciphering_algori container->integrity_context = stream_integrity_init(integrity_algorithm, integrity_key); container->ciphering_context = stream_ciphering_init(ciphering_algorithm, ciphering_key); - /* Reject invalid configurations, i.e. ones that set NIA0 */ - if (container->integrity_context == NULL) { - stream_security_container_delete(container); - return NULL; - } - return container; }