pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35364?usp=email )
Change subject: LTE_CryptoFunctions.ttcn: Immediate termination upon failure ......................................................................
LTE_CryptoFunctions.ttcn: Immediate termination upon failure
Change-Id: I09170c17c5cbb552a8aeef31b4b8fa5c89a00887 --- M mme/LTE_CryptoFunctions.ttcn 1 file changed, 21 insertions(+), 12 deletions(-)
Approvals: fixeria: Looks good to me, approved Jenkins Builder: Verified
diff --git a/mme/LTE_CryptoFunctions.ttcn b/mme/LTE_CryptoFunctions.ttcn index 687caab..dee0f22 100644 --- a/mme/LTE_CryptoFunctions.ttcn +++ b/mme/LTE_CryptoFunctions.ttcn @@ -12,6 +12,7 @@ module LTE_CryptoFunctions {
import from General_Types all; +import from Misc_Helpers all;
import from S1AP_Types all; import from S1AP_PDU_Descriptions all; @@ -53,8 +54,8 @@ return f_snow_3g_f9(k_nas_int, seq_nr, bearer, is_downlink, data); } case else { - setverdict(fail, "Unsupported EIA: ", alg); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unsupported EIA: ", alg)); + return '00000000'O; /* never reached */ } } } @@ -67,8 +68,7 @@ f_snow_3g_f8(k_nas_enc, count, bearer, is_downlink, data); } case else { - setverdict(fail, "Unsupported EEA: ", alg); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unsupported EEA: ", alg)); } } } @@ -168,19 +168,19 @@ nus.rx_count := 0; nus.alg_int := NAS_ALG_IP_EIA1; /* FIXME: from decoded inner message! */ if (not f_nas_check_ip(nus, secp_nas)) { - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "f_nas_check_ip() failed"); } return dec_PDU_NAS_EPS(secp_nas.nAS_Message); } case ('0001'B) { /* IP only */ if (not f_nas_check_ip(nus, secp_nas)) { - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "f_nas_check_ip() failed"); } return dec_PDU_NAS_EPS(secp_nas.nAS_Message); } case ('0010'B) { /* IP + ciphered */ if (not f_nas_check_ip(nus, secp_nas)) { - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "f_nas_check_ip() failed"); } f_nas_encrypt(nus.alg_enc, nus.k_nas_enc, nus.rx_count, 0, f_rx_is_downlink(nus), secp_nas.nAS_Message); @@ -189,7 +189,7 @@ case ('0100'B) { /* IP + ciphered; new EPS security context */ nus.rx_count := 0; if (not f_nas_check_ip(nus, secp_nas)) { - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "f_nas_check_ip() failed"); } f_nas_encrypt(nus.alg_enc, nus.k_nas_enc, nus.rx_count, 0, f_rx_is_downlink(nus), secp_nas.nAS_Message); @@ -198,8 +198,8 @@ //case ('0101'B) { /* IP + partially ciphered */ } //case ('1100'B) { /* Service Request Message */ } case else { - setverdict(fail, "Implement SecHdrType for ", secp_nas); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Implement SecHdrType for ", secp_nas)); + mtc.stop; /* make compiler happy about not returning. */ } } } @@ -218,8 +218,8 @@ } else if (encrypt == true and authenticate == true and new_ctx == false) { return '0010'B; } else { - setverdict(fail, "invalid sec_hdr conditions"); - mtc.stop; + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Invalid sec_hdr conditions"); + return '0000'B; /* never reached, make compiler happy */ } }