diff --git a/src/mme/nas_security.c b/src/mme/nas_security.c index 297a43cbd5..b34578f635 100644 --- a/src/mme/nas_security.c +++ b/src/mme/nas_security.c @@ -171,7 +171,7 @@ status_t nas_security_decode(mme_ue_t *mme_ue, pkbuf_t *pkbuf, if (memcmp(mac + 2, pkbuf->payload + 2, 2) != 0) { - d_warn("NAS MAC verification failed"); + d_error("NAS MAC verification failed"); *mac_failed = 1; } @@ -218,10 +218,7 @@ status_t nas_security_decode(mme_ue_t *mme_ue, pkbuf_t *pkbuf, if (mme_ue->selected_enc_algorithm == 0) ciphered = 0; if (mme_ue->selected_int_algorithm == 0) - { - d_error("integrity algorithm is not defined"); integrity_protected = 0; - } if (ciphered || integrity_protected) { @@ -259,7 +256,7 @@ status_t nas_security_decode(mme_ue_t *mme_ue, pkbuf_t *pkbuf, return CORE_ERROR, "pkbuf_header error"); return CORE_ERROR; #else - d_warn("NAS MAC verification failed"); + d_error("NAS MAC verification failed"); *mac_failed = 1; #endif } diff --git a/test/nas_sm_test.c b/test/nas_sm_test.c index 238e032d5c..0625334696 100644 --- a/test/nas_sm_test.c +++ b/test/nas_sm_test.c @@ -654,6 +654,14 @@ static void nas_sm_test3(abts_case *tc, void *data) rv = tests1ap_enb_send(sock, sendbuf); ABTS_INT_EQUAL(tc, CORE_OK, rv); + core_sleep(time_from_msec(300)); + + /* Send Service Request */ + rv = tests1ap_build_service_request(&sendbuf, msgindex); + ABTS_INT_EQUAL(tc, CORE_OK, rv); + rv = tests1ap_enb_send(sock, sendbuf); + ABTS_INT_EQUAL(tc, CORE_OK, rv); + /* eNB disonncect from MME */ rv = tests1ap_enb_close(sock); ABTS_INT_EQUAL(tc, CORE_OK, rv); diff --git a/test/tests1ap.c b/test/tests1ap.c index 42842d0ac0..7e19a571c8 100644 --- a/test/tests1ap.c +++ b/test/tests1ap.c @@ -423,3 +423,31 @@ status_t tests1ap_build_ue_context_release_complete(pkbuf_t **pkbuf, int i) return CORE_OK; } +status_t tests1ap_build_service_request(pkbuf_t **pkbuf, int i) +{ + char *payload[TESTS1AP_MAX_MESSAGE] = { + "", + "", + + "000c" + "4037000006000800 020004001a000504 c704d4b800430006 0000f1102b670064" + "40080000f11054f6 4010008640014000 6000060040000000 03", + + }; + c_uint16_t len[TESTS1AP_MAX_MESSAGE] = { + 0, + 0, + 59, + }; + char hexbuf[MAX_SDU_LEN]; + + *pkbuf = pkbuf_alloc(0, MAX_SDU_LEN); + if (!(*pkbuf)) return CORE_ERROR; + + (*pkbuf)->len = len[i]; + memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf), + (*pkbuf)->len); + + return CORE_OK; +} + diff --git a/test/tests1ap.h b/test/tests1ap.h index d205e6af8c..1330191698 100644 --- a/test/tests1ap.h +++ b/test/tests1ap.h @@ -31,6 +31,8 @@ CORE_DECLARE(status_t) tests1ap_build_ue_context_release_request( pkbuf_t **pkbuf, int i); CORE_DECLARE(status_t) tests1ap_build_ue_context_release_complete( pkbuf_t **pkbuf, int i); +CORE_DECLARE(status_t) tests1ap_build_service_request( + pkbuf_t **pkbuf, int i); #ifdef __cplusplus }