From 956b0a10eba84a0ac38392afacdfbdbd86efa549 Mon Sep 17 00:00:00 2001 From: Jiewen Yao Date: Wed, 13 May 2026 11:27:14 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=EF=BB=BFunit=5Ftest/fuzzing:=20add=20retur?= =?UTF-8?q?n=20value=20checks=20for=20libspdm=5Fread=5F*=20APIs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add missing return value checks for libspdm_read_responder_public_certificate_chain(), libspdm_read_requester_public_certificate_chain(), libspdm_read_responder_public_key(), libspdm_read_requester_public_key(), and related certificate/key reading APIs. Signed-off-by: Jiewen Yao --- .../test_spdm_requester_challenge/challenge.c | 30 ++++--- .../encap_certificate.c | 10 ++- .../encap_challenge_auth.c | 10 ++- .../encap_request.c | 20 +++-- .../end_session.c | 10 ++- .../test_spdm_requester_finish/finish.c | 38 +++++---- .../get_certificate.c | 48 +++++++----- .../get_measurements.c | 50 +++++++----- .../test_spdm_requester_heartbeat/heartbeat.c | 20 +++-- .../key_exchange.c | 64 +++++++++------ .../key_update.c | 10 ++- .../psk_exchange.c | 50 +++++++----- .../psk_finish.c | 20 +++-- .../set_certificate.c | 16 ++-- .../certificate.c | 24 +++--- .../challenge_auth.c | 78 +++++++++++-------- .../encap_challenge.c | 20 +++-- .../encap_get_certificate.c | 40 ++++++---- .../encap_get_digests.c | 10 ++- .../encap_key_update.c | 20 +++-- .../encap_response.c | 40 ++++++---- .../end_session.c | 8 +- .../finish_rsp.c | 40 ++++++---- .../heartbeat_ack.c | 16 ++-- .../key_exchange.c | 78 ++++++++++++------- .../measurements.c | 20 +++-- .../psk_exchange_rsp.c | 70 ++++++++++------- .../psk_finish_rsp.c | 30 ++++--- 28 files changed, 538 insertions(+), 352 deletions(-) diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c b/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c index 8db4c9523ef..d33a7ce8c4e 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_challenge/challenge.c @@ -58,10 +58,12 @@ libspdm_return_t libspdm_device_receive_message(void *spdm_context, size_t *resp sizeof(temp_buf) - test_message_header_size, (uint8_t *)spdm_test_context->test_buffer, spdm_response_size); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision_size[0] = data_size; ((libspdm_context_t *)spdm_context)->local_context.local_cert_chain_provision[0] = data; @@ -132,10 +134,12 @@ void libspdm_test_requester_challenge_case1(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_b(spdm_context); libspdm_reset_message_c(spdm_context); @@ -194,10 +198,12 @@ void libspdm_test_requester_challenge_ex_case1(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_b(spdm_context); libspdm_reset_message_c(spdm_context); diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c index d384c5c9ce1..aaf168abdc2 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_certificate/encap_certificate.c @@ -46,10 +46,12 @@ void libspdm_test_requester_encap_certificate(void **State) request_size = sizeof(spdm_get_certificate_request_t); } - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[slot_id] = data; spdm_context->local_context.local_cert_chain_provision_size[slot_id] = data_size; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c index dea3ceb75b1..2b11a7fed69 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_challenge_auth/encap_challenge_auth.c @@ -47,10 +47,12 @@ void libspdm_test_requester_encap_challenge(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_request/encap_request.c b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_request/encap_request.c index b0785daa0c6..92e4eec3db5 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_encap_request/encap_request.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_encap_request/encap_request.c @@ -153,10 +153,12 @@ void libspdm_test_requester_encap_request(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -210,10 +212,12 @@ void libspdm_test_requester_encap_request_case2(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCAP_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_end_session/end_session.c b/unit_test/fuzzing/test_requester/test_spdm_requester_end_session/end_session.c index e4e1e259b76..a972f606cd9 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_end_session/end_session.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_end_session/end_session.c @@ -127,10 +127,12 @@ void libspdm_test_requester_end_session(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c b/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c index d714c06dfbc..d3faf8fbc58 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_finish/finish.c @@ -96,10 +96,12 @@ void libspdm_test_send_receive_finish_case1(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -187,10 +189,12 @@ void libspdm_test_send_receive_finish_case2(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -277,10 +281,12 @@ void libspdm_test_send_receive_finish_case3(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -310,9 +316,11 @@ void libspdm_test_send_receive_finish_case3(void **State) free(data); req_slot_id_param = 0; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[req_slot_id_param] = data_size; spdm_context->local_context.local_cert_chain_provision[req_slot_id_param] = data; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_get_certificate/get_certificate.c b/unit_test/fuzzing/test_requester/test_spdm_requester_get_certificate/get_certificate.c index 5861a1fd69b..aa18e2f4bd4 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_get_certificate/get_certificate.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_get_certificate/get_certificate.c @@ -98,10 +98,12 @@ void libspdm_test_requester_get_certificate_case1(void **State) spdm_context->local_context.is_requester = true; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, @@ -157,10 +159,12 @@ void libspdm_test_requester_get_certificate_case2(void **State) spdm_context->local_context.is_requester = true; libspdm_register_verify_spdm_cert_chain_func (spdm_context, libspdm_test_verify_spdm_cert_chain); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, @@ -218,10 +222,12 @@ void libspdm_test_requester_get_certificate_case3(void **State) spdm_context->local_context.is_requester = true; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, @@ -277,10 +283,12 @@ void libspdm_test_requester_get_certificate_ex_case1(void **State) spdm_context->local_context.is_requester = true; libspdm_register_verify_spdm_cert_chain_func (spdm_context, libspdm_test_verify_spdm_cert_chain); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, @@ -360,9 +368,11 @@ void libspdm_test_requester_get_certificate_in_session_case1(void **State) m_libspdm_use_aead_algo; spdm_context->local_context.is_requester = true; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, &root_cert_size); diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_get_measurements/get_measurements.c b/unit_test/fuzzing/test_requester/test_spdm_requester_get_measurements/get_measurements.c index c44f3deeb0f..787c8c72537 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_get_measurements/get_measurements.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_get_measurements/get_measurements.c @@ -177,10 +177,12 @@ void libspdm_test_requester_get_measurement_case1(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AUTHENTICATED; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_m(spdm_context, NULL); spdm_context->connection_info.algorithm.measurement_spec = m_libspdm_use_measurement_spec; @@ -249,10 +251,12 @@ void libspdm_test_requester_get_measurement_case2(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AUTHENTICATED; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_m(spdm_context, NULL); spdm_context->connection_info.algorithm.measurement_spec = m_libspdm_use_measurement_spec; spdm_context->connection_info.algorithm.measurement_hash_algo = @@ -322,10 +326,12 @@ void libspdm_test_requester_get_measurement_case3(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AUTHENTICATED; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PSK_CAP; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ENCRYPT_CAP; @@ -404,10 +410,12 @@ void libspdm_test_requester_get_measurement_case4(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AUTHENTICATED; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_m(spdm_context, NULL); spdm_context->connection_info.algorithm.measurement_spec = m_libspdm_use_measurement_spec; spdm_context->connection_info.algorithm.measurement_hash_algo = @@ -476,10 +484,12 @@ void libspdm_test_requester_get_measurement_case5(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AUTHENTICATED; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_m(spdm_context, NULL); spdm_context->connection_info.algorithm.measurement_spec = m_libspdm_use_measurement_spec; spdm_context->connection_info.algorithm.measurement_hash_algo = diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_heartbeat/heartbeat.c b/unit_test/fuzzing/test_requester/test_spdm_requester_heartbeat/heartbeat.c index 9897341a521..f83752bbf49 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_heartbeat/heartbeat.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_heartbeat/heartbeat.c @@ -130,10 +130,12 @@ void libspdm_test_requester_heartbeat_case1(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -203,10 +205,12 @@ void libspdm_test_requester_heartbeat_case2(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_HBEAT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_key_exchange/key_exchange.c b/unit_test/fuzzing/test_requester/test_spdm_requester_key_exchange/key_exchange.c index cc4e02d08b6..e63f44a74b9 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_key_exchange/key_exchange.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_key_exchange/key_exchange.c @@ -178,10 +178,12 @@ libspdm_return_t libspdm_device_receive_message(void *spdm_context, size_t *resp &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, + NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -293,10 +295,12 @@ void libspdm_test_requester_key_exchange_case1(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -369,10 +373,12 @@ void libspdm_test_requester_key_exchange_case2(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -448,9 +454,11 @@ void libspdm_test_requester_key_exchange_case3(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -539,9 +547,11 @@ void libspdm_test_requester_key_exchange_case4(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -630,9 +640,11 @@ void libspdm_test_requester_key_exchange_case5(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -718,10 +730,12 @@ void libspdm_test_requester_key_exchange_ex_case1(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_key_update/key_update.c b/unit_test/fuzzing/test_requester/test_spdm_requester_key_update/key_update.c index 4d1c89a1523..8199334ab8f 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_key_update/key_update.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_key_update/key_update.c @@ -31,10 +31,12 @@ static void libspdm_set_standard_key_update_test_state(libspdm_context_t *spdm_c spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_KEY_UPD_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } spdm_context->transcript.message_a.buffer_size = 0; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_psk_exchange/psk_exchange.c b/unit_test/fuzzing/test_requester/test_spdm_requester_psk_exchange/psk_exchange.c index 90c001018ef..d276a0d8460 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_psk_exchange/psk_exchange.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_psk_exchange/psk_exchange.c @@ -138,10 +138,12 @@ libspdm_return_t libspdm_device_receive_message(void *spdm_context, size_t *resp m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -206,10 +208,12 @@ void libspdm_test_requester_psk_exchange_case1(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -269,10 +273,12 @@ void libspdm_test_requester_psk_exchange_case2(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; @@ -334,10 +340,12 @@ void libspdm_test_requester_psk_exchange_case3(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -397,10 +405,12 @@ void libspdm_test_requester_psk_exchange_ex_case1(void **State) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_psk_finish/psk_finish.c b/unit_test/fuzzing/test_requester/test_spdm_requester_psk_finish/psk_finish.c index 1f1fc6f8d9c..930fcce1cfe 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_psk_finish/psk_finish.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_psk_finish/psk_finish.c @@ -135,10 +135,12 @@ void libspdm_test_requester_psk_finish_case1(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; @@ -210,10 +212,12 @@ void libspdm_test_requester_psk_finish_case2(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCRYPT_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; diff --git a/unit_test/fuzzing/test_requester/test_spdm_requester_set_certificate/set_certificate.c b/unit_test/fuzzing/test_requester/test_spdm_requester_set_certificate/set_certificate.c index 8cba036ce7f..2747485aaf9 100644 --- a/unit_test/fuzzing/test_requester/test_spdm_requester_set_certificate/set_certificate.c +++ b/unit_test/fuzzing/test_requester/test_spdm_requester_set_certificate/set_certificate.c @@ -164,9 +164,11 @@ void libspdm_test_requester_set_certificate_case1(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } libspdm_set_certificate(spdm_context, NULL, 0, data, data_size); free(data); @@ -207,9 +209,11 @@ void libspdm_test_requester_set_certificate_case2(void **State) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c b/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c index 58a8ac67b02..b90889eb4ff 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_certificate/certificate.c @@ -43,9 +43,11 @@ void libspdm_test_responder_certificate_case1(void **State) spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -82,9 +84,11 @@ void libspdm_test_responder_certificate_case2(void **State) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -169,9 +173,11 @@ void libspdm_test_responder_certificate_case5(void **State) spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c b/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c index a538d61ff4c..cc8714eb35c 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_challenge_auth/challenge_auth.c @@ -46,10 +46,12 @@ void libspdm_test_responder_challenge_case1(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -86,10 +88,12 @@ void libspdm_test_responder_challenge_case2(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -125,10 +129,12 @@ void libspdm_test_responder_challenge_case3(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -168,10 +174,12 @@ void libspdm_test_responder_challenge_case4(void **State) SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MUT_AUTH_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -209,10 +217,12 @@ void libspdm_test_responder_challenge_case5(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -253,10 +263,12 @@ void libspdm_test_responder_challenge_case6(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -292,10 +304,12 @@ void libspdm_test_responder_challenge_case7(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_12 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -333,9 +347,11 @@ void libspdm_test_responder_challenge_case8(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c index c38637e1fdc..d238b6aa54f 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_challenge/encap_challenge.c @@ -55,10 +55,12 @@ void libspdm_test_responder_encap_challenge_case1(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_b(spdm_context); libspdm_reset_message_c(spdm_context); @@ -135,10 +137,12 @@ void libspdm_test_get_encap_request_challenge_case2(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c index 767fbbf4ef4..dcdeac73ec9 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_certificate/encap_get_certificate.c @@ -57,10 +57,12 @@ void libspdm_test_responder_encap_get_certificate_case1(void **State) SPDM_VERSION_NUMBER_SHIFT_BIT; spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, @@ -120,10 +122,12 @@ void libspdm_test_responder_encap_get_certificate_case2(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, @@ -190,10 +194,12 @@ void libspdm_test_responder_encap_get_certificate_case3(void **State) libspdm_register_verify_spdm_cert_chain_func (spdm_context, libspdm_test_verify_spdm_cert_chain); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, @@ -254,10 +260,12 @@ void libspdm_test_get_encap_request_get_certificate_case2(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c index 0845a2c396f..edd9e2deae0 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_get_digests/encap_get_digests.c @@ -70,10 +70,12 @@ void libspdm_test_get_encap_request_get_digest_case2(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c index 0384b41c8f0..3647b954579 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_key_update/encap_key_update.c @@ -160,10 +160,12 @@ void libspdm_test_get_encap_request_key_update_case1(void **State) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -211,10 +213,12 @@ void libspdm_test_get_encap_request_key_update_case2(void **State) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_KEY_UPD_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c index e747749ec03..4030373d780 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_encap_response/encap_response.c @@ -45,10 +45,12 @@ void libspdm_test_get_response_encapsulated_request_case1(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -217,10 +219,12 @@ void libspdm_test_get_response_encapsulated_response_ack_case1(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -286,10 +290,12 @@ void libspdm_test_get_response_encapsulated_response_ack_case3(void **State) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -382,10 +388,12 @@ void libspdm_test_get_response_encapsulated_response_ack_case6(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_12 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c b/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c index c820c050e51..0384dc03906 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_end_session/end_session.c @@ -53,9 +53,11 @@ void libspdm_test_responder_end_session(void **State) m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c b/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c index 3386bec5525..f197ba47d10 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_finish_rsp/finish_rsp.c @@ -89,10 +89,12 @@ void libspdm_test_responder_finish_case1(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data1, &data_size1, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data1, &data_size1, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -308,10 +310,12 @@ void libspdm_test_responder_finish_case7(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data1, &data_size1, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data1, &data_size1, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -389,19 +393,23 @@ void libspdm_test_responder_finish_case8(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data1, &data_size1, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data1, &data_size1, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, - &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, + &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c b/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c index a69ed8354cc..de485dd5d05 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_heartbeat_ack/heartbeat_ack.c @@ -54,9 +54,11 @@ void libspdm_test_responder_heartbeat_case1(void **State) m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -168,9 +170,11 @@ void libspdm_test_responder_heartbeat_case4(void **State) m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c b/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c index 2ba39c9ba17..f52105ca69f 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_key_exchange/key_exchange.c @@ -73,10 +73,12 @@ void libspdm_test_responder_key_exchange_case1(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -142,10 +144,12 @@ void libspdm_test_responder_key_exchange_case2(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -205,10 +209,12 @@ void libspdm_test_responder_key_exchange_case3(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -269,10 +275,12 @@ void libspdm_test_responder_key_exchange_case4(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -350,10 +358,12 @@ void libspdm_test_responder_key_exchange_case5(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -418,10 +428,12 @@ void libspdm_test_responder_key_exchange_case6(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -485,10 +497,12 @@ void libspdm_test_responder_key_exchange_case7(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -575,10 +589,14 @@ void libspdm_test_responder_key_exchange_case8(void **State) m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1)) { + return; + } spdm_context->local_context.local_public_key_provision = data1; spdm_context->local_context.local_public_key_provision_size = data_size1; - libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data2, &data_size2); + if (!libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data2, &data_size2)) { + return; + } spdm_context->local_context.peer_public_key_provision = data2; spdm_context->local_context.peer_public_key_provision_size = data_size2; libspdm_reset_message_a(spdm_context); diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c b/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c index 444665df5ec..c69b8ea0634 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_measurements/measurements.c @@ -124,10 +124,12 @@ void libspdm_test_responder_measurements_case3(void **State) << SPDM_VERSION_NUMBER_SHIFT_BIT; libspdm_reset_message_m(spdm_context, NULL); libspdm_secret_lib_meas_opaque_data_size = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } for (int i = 1; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; spdm_context->local_context.local_cert_chain_provision[i] = data; @@ -173,10 +175,12 @@ void libspdm_test_responder_measurements_case4(void **State) libspdm_reset_message_m(spdm_context, NULL); libspdm_secret_lib_meas_opaque_data_size = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } for (int i = 1; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; spdm_context->local_context.local_cert_chain_provision[i] = data; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c index 7d24bf04964..d28ec8f1598 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_exchange_rsp/psk_exchange_rsp.c @@ -67,10 +67,12 @@ void libspdm_test_responder_psk_exchange_case1(void **State) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -132,10 +134,12 @@ void libspdm_test_responder_psk_exchange_case2(void **State) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -185,10 +189,12 @@ void libspdm_test_responder_psk_exchange_case3(void **State) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -260,10 +266,12 @@ void libspdm_test_responder_psk_exchange_case4(void **State) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -337,10 +345,12 @@ void libspdm_test_responder_psk_exchange_case5(void **State) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -411,10 +421,12 @@ void libspdm_test_responder_psk_exchange_case6(void **State) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -487,10 +499,12 @@ void libspdm_test_responder_psk_exchange_case7(void **State) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c index 993621dc63d..7ddc72c031f 100644 --- a/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c +++ b/unit_test/fuzzing/test_responder/test_spdm_responder_psk_finish_rsp/psk_finish_rsp.c @@ -69,10 +69,12 @@ void libspdm_test_responder_psk_finish_rsp_case1(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data1, &data_size1, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data1, &data_size1, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -139,10 +141,12 @@ void libspdm_test_responder_psk_finish_rsp_case2(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data1, &data_size1, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data1, &data_size1, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -227,10 +231,12 @@ void libspdm_test_responder_psk_finish_rsp_case3(void **State) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data1, &data_size1, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data1, &data_size1, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; From c13f443c633e2cac38377988d3312f75831988b1 Mon Sep 17 00:00:00 2001 From: Jiewen Yao Date: Wed, 13 May 2026 11:27:20 +0800 Subject: [PATCH 2/5] unit_test/test_spdm_common: add return value checks for libspdm_read_* APIs Add missing return value checks for libspdm_read_responder_public_certificate_chain() and libspdm_read_requester_public_certificate_chain(). Signed-off-by: Jiewen Yao --- unit_test/test_spdm_common/context_data.c | 24 ++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/unit_test/test_spdm_common/context_data.c b/unit_test/test_spdm_common/context_data.c index 5a86f03f289..a18fccc7526 100644 --- a/unit_test/test_spdm_common/context_data.c +++ b/unit_test/test_spdm_common/context_data.c @@ -620,9 +620,11 @@ void libspdm_test_verify_peer_cert_chain_buffer_case6(void **state) assert(false); } /* Loading Other test Root certificate and saving its hash*/ - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo_test, &data_test, - &data_size_test, &hash_test, &hash_size_test); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo_test, &data_test, + &data_size_test, &hash_test, &hash_size_test)) { + return; + } libspdm_x509_get_cert_from_cert_chain( (uint8_t *)data_test + sizeof(spdm_cert_chain_t) + hash_size_test, data_size_test - sizeof(spdm_cert_chain_t) - hash_size_test, 0, @@ -709,9 +711,11 @@ void libspdm_test_verify_peer_cert_chain_buffer_case7(void **state) assert(false); } /* Loading Other test Root certificate and saving its hash*/ - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo_test, &data_test, - &data_size_test, &hash_test, &hash_size_test); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo_test, &data_test, + &data_size_test, &hash_test, &hash_size_test)) { + return; + } libspdm_x509_get_cert_from_cert_chain( (uint8_t *)data_test + sizeof(spdm_cert_chain_t) + hash_size_test, data_size_test - sizeof(spdm_cert_chain_t) - hash_size_test, 0, @@ -815,9 +819,11 @@ void libspdm_test_verify_peer_cert_chain_buffer_case8(void **state) assert(false); } /* Loading Other test Root certificate and saving its hash*/ - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo_test, &data_test, - &data_size_test, &hash_test, &hash_size_test); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo_test, &data_test, + &data_size_test, &hash_test, &hash_size_test)) { + return; + } libspdm_x509_get_cert_from_cert_chain( (uint8_t *)data_test + sizeof(spdm_cert_chain_t) + hash_size_test, data_size_test - sizeof(spdm_cert_chain_t) - hash_size_test, 0, From be926295ae03b788ca13cad15d38a20d988bc178 Mon Sep 17 00:00:00 2001 From: Jiewen Yao Date: Wed, 13 May 2026 11:27:24 +0800 Subject: [PATCH 3/5] unit_test/test_spdm_crypt: add return value checks for libspdm_read_* APIs Add missing return value checks for libspdm_read_responder_public_certificate_chain(). Signed-off-by: Jiewen Yao --- unit_test/test_spdm_crypt/test_spdm_crypt.c | 24 ++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/unit_test/test_spdm_crypt/test_spdm_crypt.c b/unit_test/test_spdm_crypt/test_spdm_crypt.c index b335cfd03ab..80f6dcb27cc 100644 --- a/unit_test/test_spdm_crypt/test_spdm_crypt.c +++ b/unit_test/test_spdm_crypt/test_spdm_crypt.c @@ -692,11 +692,13 @@ static void libspdm_test_crypt_spdm_verify_certificate_chain_buffer(void **state size_t data_size; if ((LIBSPDM_RSA_SSA_2048_SUPPORT) && (LIBSPDM_SHA256_SUPPORT)) { - libspdm_read_responder_public_certificate_chain( - SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256, - SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, - &data,&data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256, + SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, + &data,&data_size, + NULL, NULL)) { + return; + } status = libspdm_verify_certificate_chain_buffer( SPDM_MESSAGE_VERSION_13, @@ -731,11 +733,13 @@ static void libspdm_test_crypt_spdm_verify_certificate_chain_buffer(void **state } if ((LIBSPDM_ECDSA_P256_SUPPORT) && (LIBSPDM_SHA256_SUPPORT)) { - libspdm_read_responder_public_certificate_chain( - SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256, - SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P256, - &data,&data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + SPDM_ALGORITHMS_BASE_HASH_ALGO_TPM_ALG_SHA_256, + SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P256, + &data,&data_size, + NULL, NULL)) { + return; + } status = libspdm_verify_certificate_chain_buffer( SPDM_MESSAGE_VERSION_13, From 32214dd4c8ad0d2cd84739ded9c116b47406aa84 Mon Sep 17 00:00:00 2001 From: Jiewen Yao Date: Wed, 13 May 2026 11:27:32 +0800 Subject: [PATCH 4/5] unit_test/test_spdm_requester: add return value checks for libspdm_read_* APIs Add missing return value checks for libspdm_read_responder_public_certificate_chain(), libspdm_read_requester_public_certificate_chain(), libspdm_read_responder_public_key(), libspdm_read_requester_public_key(), libspdm_read_responder_root_public_certificate(), libspdm_read_responder_public_certificate_chain_per_slot(), libspdm_read_responder_public_certificate_chain_by_size(), libspdm_read_responder_public_certificate_chain_alias_cert(), and related APIs. Signed-off-by: Jiewen Yao --- unit_test/test_spdm_requester/challenge.c | 86 +++-- unit_test/test_spdm_requester/chunk_get.c | 46 ++- .../test_spdm_requester/encap_certificate.c | 50 ++- .../encap_challenge_auth.c | 52 ++- .../test_spdm_requester/encap_endpoint_info.c | 28 +- .../error_test/encap_endpoint_info_err.c | 8 +- .../error_test/get_digests_err.c | 10 +- .../error_test/key_exchange_err.c | 192 ++++++---- unit_test/test_spdm_requester/finish.c | 168 +++++---- .../test_spdm_requester/get_certificate.c | 344 +++++++++++------- unit_test/test_spdm_requester/get_csr.c | 6 +- unit_test/test_spdm_requester/get_digests.c | 30 +- .../get_encapsulated_request.c | 10 +- .../test_spdm_requester/get_endpoint_info.c | 12 +- .../test_spdm_requester/get_measurements.c | 4 +- unit_test/test_spdm_requester/key_exchange.c | 224 +++++++----- unit_test/test_spdm_requester/psk_exchange.c | 168 +++++---- .../test_spdm_requester/set_certificate.c | 48 ++- 18 files changed, 922 insertions(+), 564 deletions(-) diff --git a/unit_test/test_spdm_requester/challenge.c b/unit_test/test_spdm_requester/challenge.c index 9500ac882d8..96a31b9fd39 100644 --- a/unit_test/test_spdm_requester/challenge.c +++ b/unit_test/test_spdm_requester/challenge.c @@ -162,9 +162,11 @@ static libspdm_return_t receive_message( size_t spdm_response_size; size_t transport_header_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context) ->local_context.local_cert_chain_provision_size[0] = data_size; ((libspdm_context_t *)spdm_context) @@ -242,9 +244,11 @@ static libspdm_return_t receive_message( size_t spdm_response_size; size_t transport_header_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context) ->local_context.local_cert_chain_provision_size[0] = data_size; ((libspdm_context_t *)spdm_context) @@ -379,9 +383,11 @@ static libspdm_return_t receive_message( size_t spdm_response_size; size_t transport_header_size; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context) ->local_context .local_cert_chain_provision_size[0] = data_size; @@ -531,9 +537,11 @@ static libspdm_return_t receive_message( size_t spdm_response_size; size_t transport_header_size; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context) ->local_context .local_cert_chain_provision_size[0] = data_size; @@ -1415,14 +1423,18 @@ static libspdm_return_t receive_message( static uint8_t slot_id = 0; if (slot_id == 0) { - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } else { - libspdm_read_responder_public_certificate_chain_per_slot(1, - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_per_slot(1, + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } ((libspdm_context_t *)spdm_context) ->local_context.local_cert_chain_provision_size[slot_id] = data_size; @@ -1502,7 +1514,9 @@ static libspdm_return_t receive_message( size_t spdm_response_size; size_t transport_header_size; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context) ->local_context.local_public_key_provision_size = data_size; ((libspdm_context_t *)spdm_context) @@ -1782,9 +1796,11 @@ static libspdm_return_t receive_message( size_t transport_header_size; uint8_t slot_id = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context) ->local_context.local_cert_chain_provision_size[0] = data_size; ((libspdm_context_t *)spdm_context) @@ -1863,9 +1879,11 @@ static libspdm_return_t receive_message( size_t transport_header_size; uint8_t slot_id = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } ((libspdm_context_t *)spdm_context) ->local_context.local_cert_chain_provision_size[0] = data_size; ((libspdm_context_t *)spdm_context) @@ -3476,11 +3494,13 @@ static void req_challenge_case23(void **state) &spdm_context->connection_info.peer_used_cert_chain[0].leaf_cert_public_key); #endif - libspdm_read_responder_public_certificate_chain_per_slot( - 1, - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data1_size, &hash1, &hash1_size); + if (!libspdm_read_responder_public_certificate_chain_per_slot( + 1, + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data1_size, &hash1, &hash1_size)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[1].buffer_size = data1_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[1].buffer, @@ -3533,7 +3553,9 @@ static void req_challenge_case24(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHAL_CAP; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PUB_KEY_ID_CAP; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.peer_public_key_provision = data; spdm_context->local_context.peer_public_key_provision_size = data_size; diff --git a/unit_test/test_spdm_requester/chunk_get.c b/unit_test/test_spdm_requester/chunk_get.c index f36fd312143..d7a61441b44 100644 --- a/unit_test/test_spdm_requester/chunk_get.c +++ b/unit_test/test_spdm_requester/chunk_get.c @@ -49,10 +49,12 @@ void libspdm_requester_chunk_get_test_case1_build_certificates_response( uint16_t sub_cert_remainder_length; if (m_libspdm_local_certificate_chain_test_case_1 == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain_test_case_1, - &m_libspdm_local_certificate_chain_size_test_case_1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain_test_case_1, + &m_libspdm_local_certificate_chain_size_test_case_1, NULL, NULL)) { + return; + } } LIBSPDM_ASSERT(m_libspdm_local_certificate_chain_test_case_1 != NULL); @@ -163,10 +165,12 @@ void libspdm_requester_chunk_get_test_case3_build_challenge_response( size_t sig_size; spdm_context = (libspdm_context_t*) context; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -675,10 +679,12 @@ static void req_chunk_get_case1(void** state) = CHUNK_GET_REQUESTER_UNIT_TEST_DATA_TRANSFER_SIZE; spdm_context->local_context.is_requester = true; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain( (uint8_t*) data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, @@ -745,9 +751,11 @@ static void req_chunk_get_case2(void** state) spdm_context->local_context.capability.data_transfer_size = CHUNK_GET_REQUESTER_UNIT_TEST_DATA_TRANSFER_SIZE; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &data, &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &data, &data_size, &hash, &hash_size)) { + return; + } libspdm_reset_message_m(spdm_context, NULL); spdm_context->connection_info.algorithm.measurement_spec = m_libspdm_use_measurement_spec; spdm_context->connection_info.algorithm.measurement_hash_algo = @@ -825,9 +833,11 @@ static void req_chunk_get_case3(void** state) spdm_context->local_context.capability.data_transfer_size = CHUNK_GET_REQUESTER_UNIT_TEST_DATA_TRANSFER_SIZE; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &data, &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &data, &data_size, &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_b(spdm_context); libspdm_reset_message_c(spdm_context); diff --git a/unit_test/test_spdm_requester/encap_certificate.c b/unit_test/test_spdm_requester/encap_certificate.c index 28dda602741..a095fa875c5 100644 --- a/unit_test/test_spdm_requester/encap_certificate.c +++ b/unit_test/test_spdm_requester/encap_certificate.c @@ -59,9 +59,11 @@ static void req_encap_certificate_case1(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -133,9 +135,11 @@ static void req_encap_certificate_case3(void **state) << SPDM_VERSION_NUMBER_SHIFT_BIT; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -210,9 +214,11 @@ static void req_encap_certificate_case4(void **state) << SPDM_VERSION_NUMBER_SHIFT_BIT; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -293,10 +299,12 @@ static void req_encap_certificate_case5(void **state) for (int i = 0; i < sizeof(test_cases) / sizeof(test_cases[0]); i++) { - libspdm_read_responder_public_certificate_chain_by_size( - /*MAXUINT16_CERT signature_algo is SHA256RSA */ - m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, - test_cases[i], &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_by_size( + /*MAXUINT16_CERT signature_algo is SHA256RSA */ + m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, + test_cases[i], &data, &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -382,9 +390,11 @@ static void req_encap_certificate_case6(void **state) << SPDM_VERSION_NUMBER_SHIFT_BIT; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -466,9 +476,11 @@ static void req_encap_certificate_case7(void **state) spdm_context->local_context.capability.flags = 0; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/test_spdm_requester/encap_challenge_auth.c b/unit_test/test_spdm_requester/encap_challenge_auth.c index 65a9c29bff4..1f93a0e63a4 100644 --- a/unit_test/test_spdm_requester/encap_challenge_auth.c +++ b/unit_test/test_spdm_requester/encap_challenge_auth.c @@ -79,9 +79,11 @@ static void req_encap_challenge_auth_case1(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -157,9 +159,11 @@ static void req_encap_challenge_auth_case3(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -211,9 +215,11 @@ static void req_encap_challenge_auth_case4(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -265,9 +271,11 @@ static void req_encap_challenge_auth_case5(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -318,7 +326,9 @@ static void req_encap_challenge_auth_case6(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size); + if (!libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.local_public_key_provision = data; spdm_context->local_context.local_public_key_provision_size = data_size; @@ -398,9 +408,11 @@ static void req_encap_challenge_auth_case7(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -493,9 +505,11 @@ static void req_encap_challenge_auth_case8(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/test_spdm_requester/encap_endpoint_info.c b/unit_test/test_spdm_requester/encap_endpoint_info.c index 0586eae5a96..b8afe85fb5a 100644 --- a/unit_test/test_spdm_requester/encap_endpoint_info.c +++ b/unit_test/test_spdm_requester/encap_endpoint_info.c @@ -100,9 +100,11 @@ static void req_encap_endpoint_info_case1(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; @@ -211,9 +213,11 @@ static void req_encap_endpoint_info_case2(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[1] = data_size; spdm_context->local_context.local_cert_chain_provision[1] = data; #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT @@ -321,7 +325,9 @@ static void req_encap_endpoint_info_case3(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size); + if (!libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.local_public_key_provision = data; spdm_context->local_context.local_public_key_provision_size = data_size; spdm_context->encap_context.req_slot_id = 0xF; @@ -463,9 +469,11 @@ static void req_encap_endpoint_info_case5(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; diff --git a/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c b/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c index 85a305b39d1..865430818aa 100644 --- a/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c +++ b/unit_test/test_spdm_requester/error_test/encap_endpoint_info_err.c @@ -545,9 +545,11 @@ void libspdm_test_requester_encap_endpoint_info_err_case9(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/test_spdm_requester/error_test/get_digests_err.c b/unit_test/test_spdm_requester/error_test/get_digests_err.c index cb228e82e15..cde5243887c 100644 --- a/unit_test/test_spdm_requester/error_test/get_digests_err.c +++ b/unit_test/test_spdm_requester/error_test/get_digests_err.c @@ -729,10 +729,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain_test_cert == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain_test_cert, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain_test_cert, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain_test_cert == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; diff --git a/unit_test/test_spdm_requester/error_test/key_exchange_err.c b/unit_test/test_spdm_requester/error_test/key_exchange_err.c index 724542413e0..45afac0f6d0 100644 --- a/unit_test/test_spdm_requester/error_test/key_exchange_err.c +++ b/unit_test/test_spdm_requester/error_test/key_exchange_err.c @@ -441,9 +441,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -599,9 +601,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -820,9 +824,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1058,9 +1064,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1262,9 +1270,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1429,9 +1439,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1595,9 +1607,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1764,9 +1778,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1923,9 +1939,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2082,9 +2100,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2249,9 +2269,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2409,9 +2431,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2574,9 +2598,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2730,9 +2756,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2891,9 +2919,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3051,9 +3081,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3211,9 +3243,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3371,9 +3405,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3533,9 +3569,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3695,9 +3733,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3857,9 +3897,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -4013,9 +4055,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - m_libspdm_local_buffer_size, spdm_response, (size_t)ptr - (size_t)spdm_response); @@ -4168,9 +4212,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -4327,9 +4373,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - diff --git a/unit_test/test_spdm_requester/finish.c b/unit_test/test_spdm_requester/finish.c index 1cde15dae49..ad5d0eabf57 100644 --- a/unit_test/test_spdm_requester/finish.c +++ b/unit_test/test_spdm_requester/finish.c @@ -235,9 +235,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -302,9 +304,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -433,9 +437,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -574,9 +580,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -681,9 +689,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -748,9 +758,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -815,9 +827,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -883,9 +897,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -950,9 +966,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -1020,16 +1038,20 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, @@ -1184,16 +1206,20 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, @@ -1282,16 +1308,20 @@ static libspdm_return_t receive_message( sizeof(m_libspdm_local_buffer) - m_libspdm_local_buffer_size, spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, @@ -1360,7 +1390,9 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer), spdm_response, sizeof(spdm_finish_response_t)); m_libspdm_local_buffer_size += sizeof(spdm_finish_response_t); - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); cert_buffer = (uint8_t *)data; cert_buffer_size = data_size; @@ -2902,9 +2934,11 @@ static void req_finish_case16(void **state) #endif req_slot_id_param = 0; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } spdm_context->local_context. local_cert_chain_provision_size[req_slot_id_param] = data_size; spdm_context->local_context. @@ -3003,9 +3037,11 @@ static void req_finish_case17(void **state) #endif req_slot_id_param = 0; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } spdm_context->local_context. local_cert_chain_provision_size[req_slot_id_param] = data_size; spdm_context->local_context. @@ -3100,9 +3136,11 @@ static void req_finish_case18(void **state) #endif req_slot_id_param = 0; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } spdm_context->local_context. local_cert_chain_provision_size[req_slot_id_param] = data_size; spdm_context->local_context. @@ -3206,9 +3244,11 @@ static void req_finish_case20(void **state) #endif req_slot_id_param = 0; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } spdm_context->local_context. local_cert_chain_provision_size[req_slot_id_param] = data_size; spdm_context->local_context. @@ -3390,9 +3430,11 @@ static void req_finish_case22(void **state) #endif req_slot_id_param = 0; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } spdm_context->local_context. local_cert_chain_provision_size[req_slot_id_param] = data_size; spdm_context->local_context. @@ -3473,7 +3515,9 @@ static void req_finish_case23(void **state) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_MAC_CAP; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PUB_KEY_ID_CAP; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.peer_public_key_provision = data; spdm_context->local_context.peer_public_key_provision_size = data_size; diff --git a/unit_test/test_spdm_requester/get_certificate.c b/unit_test/test_spdm_requester/get_certificate.c index 0a19389ab2a..c29c16003ec 100644 --- a/unit_test/test_spdm_requester/get_certificate.c +++ b/unit_test/test_spdm_requester/get_certificate.c @@ -209,10 +209,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -274,10 +276,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -402,11 +406,13 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, - NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, + NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -543,11 +549,13 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, - NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, + NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -612,10 +620,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -683,10 +693,12 @@ static libspdm_return_t receive_message( size_t hash_size; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; } @@ -767,10 +779,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -832,10 +846,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain_by_size( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - LIBSPDM_TEST_CERT_SMALL, &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_by_size( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + LIBSPDM_TEST_CERT_SMALL, &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -901,10 +917,12 @@ static libspdm_return_t receive_message( get_cert_length = 1; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -963,12 +981,14 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain_by_size( - m_libspdm_use_hash_algo, - /*MAXUINT16_CERT signature_algo is SHA256RSA */ - SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, - LIBSPDM_TEST_CERT_MAXUINT16, &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_by_size( + m_libspdm_use_hash_algo, + /*MAXUINT16_CERT signature_algo is SHA256RSA */ + SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, + LIBSPDM_TEST_CERT_MAXUINT16, &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_SUCCESS; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1083,20 +1103,24 @@ static libspdm_return_t receive_message( hash_size = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; } } /* read root certificate size*/ - libspdm_read_responder_root_public_certificate( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &root_cert_data, - &root_cert_size, NULL, NULL); + if (!libspdm_read_responder_root_public_certificate( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &root_cert_data, + &root_cert_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } /* load certificate*/ hash_size = libspdm_get_hash_size(m_libspdm_use_hash_algo); root_cert_size = root_cert_size - sizeof(spdm_cert_chain_t) - hash_size; @@ -1201,20 +1225,24 @@ static libspdm_return_t receive_message( hash_size = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; } } /* read root certificate size*/ - libspdm_read_responder_root_public_certificate( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &root_cert_data, - &root_cert_size, NULL, NULL); + if (!libspdm_read_responder_root_public_certificate( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &root_cert_data, + &root_cert_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } /* load certificate*/ hash_size = libspdm_get_hash_size(m_libspdm_use_hash_algo); root_cert_size = root_cert_size - sizeof(spdm_cert_chain_t) - hash_size; @@ -1372,10 +1400,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1437,10 +1467,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1502,10 +1534,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1569,10 +1603,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1638,10 +1674,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1706,15 +1744,19 @@ static libspdm_return_t receive_message( if (m_libspdm_local_certificate_chain == NULL) { if (slot_id == 0) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } else { - libspdm_read_responder_public_certificate_chain_per_slot( - 1, m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_per_slot( + 1, m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } } if (m_libspdm_local_certificate_chain == NULL) { @@ -1777,15 +1819,19 @@ static libspdm_return_t receive_message( static uint8_t slot_id = 0; if (slot_id == 0) { - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } else { - libspdm_read_responder_public_certificate_chain_per_slot(1, - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_per_slot(1, + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } ((libspdm_context_t *)spdm_context) ->local_context.local_cert_chain_provision_size[slot_id] = data_size; @@ -1872,10 +1918,12 @@ static libspdm_return_t receive_message( session_id = 0xFFFFFFFF; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1954,10 +2002,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -2019,10 +2069,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain_alias_cert( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_alias_cert( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -2084,10 +2136,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain_alias_cert_till_dev_cert_ca( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_alias_cert_till_dev_cert_ca( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -2153,10 +2207,12 @@ static libspdm_return_t receive_message( } if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -2212,10 +2268,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -3078,9 +3136,11 @@ static void req_get_certificate_case13(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; /* Loading Root certificate and saving its hash*/ - libspdm_read_responder_public_certificate_chain_by_size( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, LIBSPDM_TEST_CERT_SMALL, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain_by_size( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, LIBSPDM_TEST_CERT_SMALL, &data, + &data_size, &hash, &hash_size)) { + return; + } if (!libspdm_x509_get_cert_from_cert_chain( (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, &root_cert_size)) { @@ -3214,10 +3274,12 @@ static void req_get_certificate_case15(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; /* Loading Root certificate and saving its hash*/ - libspdm_read_responder_public_certificate_chain_by_size( - /*MAXUINT16_CERT signature_algo is SHA256RSA */ - m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, - LIBSPDM_TEST_CERT_MAXUINT16, &data, &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain_by_size( + /*MAXUINT16_CERT signature_algo is SHA256RSA */ + m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, + LIBSPDM_TEST_CERT_MAXUINT16, &data, &data_size, &hash, &hash_size)) { + return; + } if (!libspdm_x509_get_cert_from_cert_chain( (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, &root_cert_size)) { @@ -3840,9 +3902,11 @@ static void req_get_certificate_case25(void **state) spdm_context->local_context.peer_root_cert_provision_size[0] = root_cert_size; spdm_context->local_context.peer_root_cert_provision[0] = root_cert; - libspdm_read_responder_public_certificate_chain_per_slot(1, m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data1_size, &hash1, &hash1_size); + if (!libspdm_read_responder_public_certificate_chain_per_slot(1, m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data1_size, &hash1, &hash1_size)) { + return; + } libspdm_x509_get_cert_from_cert_chain((uint8_t *)data1 + sizeof(spdm_cert_chain_t) + hash1_size, data1_size - sizeof(spdm_cert_chain_t) - hash1_size, 0, &root_cert1, &root_cert1_size); @@ -4047,10 +4111,12 @@ static void req_get_certificate_case28(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP; - libspdm_read_responder_public_certificate_chain_alias_cert( - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain_alias_cert( + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } if (!libspdm_x509_get_cert_from_cert_chain( (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, &root_cert_size)) { @@ -4107,10 +4173,12 @@ static void req_get_certificate_case29(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP; - libspdm_read_responder_public_certificate_chain_alias_cert( - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain_alias_cert( + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } if (!libspdm_x509_get_cert_from_cert_chain( (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size, data_size - sizeof(spdm_cert_chain_t) - hash_size, 0, &root_cert, &root_cert_size)) { diff --git a/unit_test/test_spdm_requester/get_csr.c b/unit_test/test_spdm_requester/get_csr.c index f8ad022237d..96b56cbe6d5 100644 --- a/unit_test/test_spdm_requester/get_csr.c +++ b/unit_test/test_spdm_requester/get_csr.c @@ -58,8 +58,10 @@ void libspdm_gen_req_info() { req_info_p = right_req_info; right_req_info_size = sizeof(right_req_info); - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, - &req_info_pkinfo, &req_info_pkinfo_len); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, + &req_info_pkinfo, &req_info_pkinfo_len)) { + return; + } /*concat right_req_info*/ libspdm_copy_mem(req_info_p, right_req_info_size, req_info_sequence, sizeof(req_info_sequence)); diff --git a/unit_test/test_spdm_requester/get_digests.c b/unit_test/test_spdm_requester/get_digests.c index 841d247675a..2dccac44ff4 100644 --- a/unit_test/test_spdm_requester/get_digests.c +++ b/unit_test/test_spdm_requester/get_digests.c @@ -787,10 +787,12 @@ static libspdm_return_t receive_message( spdm_response->header.param2 = 0; if (m_libspdm_local_certificate_chain_test_cert == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain_test_cert, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain_test_cert, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain_test_cert == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -816,10 +818,12 @@ static libspdm_return_t receive_message( static size_t calling_index = 0; if (m_libspdm_local_certificate_chain_test_cert == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain_test_cert, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain_test_cert, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } } if (m_libspdm_local_certificate_chain_test_cert == NULL) { return LIBSPDM_STATUS_RECEIVE_FAIL; @@ -1505,10 +1509,12 @@ static void req_get_digests_case24(void **state) libspdm_zero_mem(my_total_digest_buffer, sizeof(my_total_digest_buffer)); digest = my_total_digest_buffer; if (m_libspdm_local_certificate_chain_test_cert == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain_test_cert, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain_test_cert, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return; + } } libspdm_hash_all(m_libspdm_use_hash_algo, m_libspdm_local_certificate_chain_test_cert, m_libspdm_local_certificate_chain_size, digest); diff --git a/unit_test/test_spdm_requester/get_encapsulated_request.c b/unit_test/test_spdm_requester/get_encapsulated_request.c index 5e191fa5e41..6a93dbf02b1 100644 --- a/unit_test/test_spdm_requester/get_encapsulated_request.c +++ b/unit_test/test_spdm_requester/get_encapsulated_request.c @@ -1235,10 +1235,12 @@ static void req_get_encapsulated_request_case13(void **State) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_EP_INFO_CAP_SIG; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/test_spdm_requester/get_endpoint_info.c b/unit_test/test_spdm_requester/get_endpoint_info.c index 7f156f54115..1cba687e1d4 100644 --- a/unit_test/test_spdm_requester/get_endpoint_info.c +++ b/unit_test/test_spdm_requester/get_endpoint_info.c @@ -934,9 +934,11 @@ static void req_get_endpoint_info_case4(void **state) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EP_INFO_CAP_SIG; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MULTI_KEY_CAP; - libspdm_read_responder_public_certificate_chain_per_slot(1, m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain_per_slot(1, m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, &hash, &hash_size)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_e(spdm_context, NULL); @@ -1024,7 +1026,9 @@ static void req_get_endpoint_info_case5(void **state) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EP_INFO_CAP_SIG; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PUB_KEY_ID_CAP; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.peer_public_key_provision = data; spdm_context->local_context.peer_public_key_provision_size = data_size; diff --git a/unit_test/test_spdm_requester/get_measurements.c b/unit_test/test_spdm_requester/get_measurements.c index 6be87a801af..d8182bcfe04 100644 --- a/unit_test/test_spdm_requester/get_measurements.c +++ b/unit_test/test_spdm_requester/get_measurements.c @@ -5678,7 +5678,9 @@ static void req_get_measurements_case38(void **state) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_MEAS_CAP_SIG; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_PUB_KEY_ID_CAP; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.peer_public_key_provision = data; spdm_context->local_context.peer_public_key_provision_size = data_size; diff --git a/unit_test/test_spdm_requester/key_exchange.c b/unit_test/test_spdm_requester/key_exchange.c index 9d8eaa4b0d7..e1dd05eb05b 100644 --- a/unit_test/test_spdm_requester/key_exchange.c +++ b/unit_test/test_spdm_requester/key_exchange.c @@ -467,9 +467,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -625,9 +627,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -846,9 +850,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1084,9 +1090,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1288,9 +1296,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1454,9 +1464,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1620,9 +1632,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1787,9 +1801,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -1946,9 +1962,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2105,9 +2123,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2272,9 +2292,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2432,9 +2454,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2583,9 +2607,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2711,9 +2737,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -2870,9 +2898,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3029,9 +3059,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3188,9 +3220,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3347,9 +3381,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3506,9 +3542,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3667,9 +3705,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3828,9 +3868,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -3989,9 +4031,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -4145,9 +4189,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - m_libspdm_local_buffer_size, spdm_response, (size_t)ptr - (size_t)spdm_response); @@ -4300,9 +4346,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -4458,9 +4506,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -4617,7 +4667,9 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -4773,9 +4825,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -4929,9 +4983,11 @@ static libspdm_return_t receive_message( spdm_context, SECURED_SPDM_VERSION_12 << SPDM_VERSION_NUMBER_SHIFT_BIT, &opaque_key_exchange_rsp_size, ptr); ptr += opaque_key_exchange_rsp_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } libspdm_copy_mem(&m_libspdm_local_buffer[m_libspdm_local_buffer_size], sizeof(m_libspdm_local_buffer) - (&m_libspdm_local_buffer[m_libspdm_local_buffer_size] - @@ -7544,7 +7600,9 @@ void req_key_exchange_case32(void **state) spdm_context->local_context.secured_message_version.secured_message_version_count = 1; spdm_context->local_context.secured_message_version.secured_message_version[0] = SECURED_SPDM_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.peer_public_key_provision = data; spdm_context->local_context.peer_public_key_provision_size = data_size; diff --git a/unit_test/test_spdm_requester/psk_exchange.c b/unit_test/test_spdm_requester/psk_exchange.c index d21eccc273a..10472f67568 100644 --- a/unit_test/test_spdm_requester/psk_exchange.c +++ b/unit_test/test_spdm_requester/psk_exchange.c @@ -384,9 +384,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -494,9 +496,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -669,9 +673,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); @@ -860,9 +866,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); @@ -1016,9 +1024,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1124,9 +1134,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1236,9 +1248,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1356,9 +1370,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1476,9 +1492,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1597,9 +1615,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1710,9 +1730,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1823,9 +1845,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -1944,9 +1968,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2055,9 +2081,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2166,9 +2194,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2277,9 +2307,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2388,9 +2420,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2502,9 +2536,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2611,9 +2647,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2720,9 +2758,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); @@ -2830,9 +2870,11 @@ static libspdm_return_t receive_message( m_libspdm_local_buffer_size)); libspdm_dump_hex(m_libspdm_local_buffer, m_libspdm_local_buffer_size); libspdm_init_managed_buffer(&th_curr, sizeof(th_curr.buffer)); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return LIBSPDM_STATUS_RECEIVE_FAIL; + } cert_buffer = (uint8_t *)data + sizeof(spdm_cert_chain_t) + hash_size; cert_buffer_size = data_size - (sizeof(spdm_cert_chain_t) + hash_size); libspdm_hash_all(m_libspdm_use_hash_algo, cert_buffer, cert_buffer_size, cert_buffer_hash); diff --git a/unit_test/test_spdm_requester/set_certificate.c b/unit_test/test_spdm_requester/set_certificate.c index 1d74e87e7e6..c63abf45f35 100644 --- a/unit_test/test_spdm_requester/set_certificate.c +++ b/unit_test/test_spdm_requester/set_certificate.c @@ -331,9 +331,11 @@ static void req_set_certificate_case1(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } status = libspdm_set_certificate(spdm_context, NULL, 0, data, data_size); @@ -364,9 +366,11 @@ static void req_set_certificate_case2(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } status = libspdm_set_certificate(spdm_context, NULL, 0, data, data_size); @@ -433,9 +437,11 @@ static void req_set_certificate_case5(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } session_id = 0xFFFFFFFF; session_info = &spdm_context->session_info[0]; @@ -475,9 +481,11 @@ static void req_set_certificate_case6(void **state) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP | SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_INSTALL_RESET_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } status = libspdm_set_certificate(spdm_context, NULL, 0, data, data_size); @@ -535,9 +543,11 @@ static void req_set_certificate_case8(void **state) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP; spdm_context->connection_info.multi_key_conn_rsp = true; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } status = libspdm_set_certificate_ex(spdm_context, NULL, 0, data, data_size, (SPDM_CERTIFICATE_INFO_CERT_MODEL_NONE << @@ -571,9 +581,11 @@ static void req_set_certificate_case9(void **state) SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_SET_CERT_CAP; spdm_context->connection_info.multi_key_conn_rsp = true; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &data, &data_size, NULL, NULL)) { + return; + } status = libspdm_set_certificate_ex(spdm_context, NULL, 3, data, data_size, (SPDM_CERTIFICATE_INFO_CERT_MODEL_DEVICE_CERT << From d398fd93981fc67a2384cdef752ef1e941d9fd58 Mon Sep 17 00:00:00 2001 From: Jiewen Yao Date: Wed, 13 May 2026 11:27:38 +0800 Subject: [PATCH 5/5] unit_test/test_spdm_responder: add return value checks for libspdm_read_* APIs Add missing return value checks for libspdm_read_responder_public_certificate_chain(), libspdm_read_requester_public_certificate_chain(), libspdm_read_responder_public_key(), libspdm_read_requester_public_key(), libspdm_read_responder_root_public_certificate(), libspdm_read_responder_public_certificate_chain_per_slot(), libspdm_read_responder_public_certificate_chain_alias_cert(), libspdm_read_responder_public_certificate_chain_alias_cert_till_dev_cert_ca(), and related APIs. Signed-off-by: Jiewen Yao --- unit_test/test_spdm_responder/certificate.c | 138 +++++--- .../test_spdm_responder/challenge_auth.c | 68 ++-- unit_test/test_spdm_responder/csr.c | 6 +- .../test_spdm_responder/encap_challenge.c | 54 +-- .../encap_get_certificate.c | 40 ++- .../encap_get_endpoint_info.c | 20 +- .../encapsulated_request.c | 120 ++++--- .../test_spdm_responder/end_session_ack.c | 64 ++-- unit_test/test_spdm_responder/endpoint_info.c | 28 +- .../error_test/encap_get_endpoint_info_err.c | 32 +- .../error_test/endpoint_info_err.c | 8 +- unit_test/test_spdm_responder/finish_rsp.c | 328 +++++++++++------- unit_test/test_spdm_responder/heartbeat_ack.c | 56 +-- .../test_spdm_responder/key_exchange_rsp.c | 184 ++++++---- unit_test/test_spdm_responder/measurements.c | 86 +++-- .../test_spdm_responder/psk_exchange_rsp.c | 144 +++++--- .../test_spdm_responder/psk_finish_rsp.c | 128 ++++--- unit_test/test_spdm_responder/receive_send.c | 24 +- .../test_spdm_responder/set_certificate_rsp.c | 106 +++--- 19 files changed, 1018 insertions(+), 616 deletions(-) diff --git a/unit_test/test_spdm_responder/certificate.c b/unit_test/test_spdm_responder/certificate.c index 4195335aa10..e046a45eceb 100644 --- a/unit_test/test_spdm_responder/certificate.c +++ b/unit_test/test_spdm_responder/certificate.c @@ -66,9 +66,11 @@ static void rsp_certificate_case1(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -127,9 +129,11 @@ static void rsp_certificate_case3(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -171,9 +175,11 @@ static void rsp_certificate_case4(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -217,9 +223,11 @@ static void rsp_certificate_case5(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -267,9 +275,11 @@ static void rsp_certificate_case6(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NOT_STARTED; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -319,9 +329,11 @@ static void rsp_certificate_case7(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -393,9 +405,11 @@ static void rsp_certificate_case8(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -486,9 +500,11 @@ static void rsp_certificate_case9(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -591,10 +607,12 @@ static void rsp_certificate_case10(void **state) m_libspdm_get_certificate_request3.length = LIBSPDM_MAX_CERT_CHAIN_BLOCK_LEN; for (int i = 0; i < sizeof(test_cases) / sizeof(test_cases[0]); i++) { - libspdm_read_responder_public_certificate_chain_by_size( - /*MAXUINT16_CERT signature_algo is SHA256RSA */ - m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, - test_cases[i], &data, &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_by_size( + /*MAXUINT16_CERT signature_algo is SHA256RSA */ + m_libspdm_use_hash_algo, SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_RSASSA_2048, + test_cases[i], &data, &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -697,9 +715,11 @@ static void rsp_certificate_case11(void **state) m_libspdm_get_certificate_request3.offset = 0; for (int i = 0; i < sizeof(test_cases) / sizeof(test_cases[0]); i++) { - libspdm_read_responder_public_certificate_chain_by_size( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, test_cases[i], &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_by_size( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, test_cases[i], &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -783,9 +803,11 @@ static void rsp_certificate_case12(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -873,9 +895,11 @@ static void rsp_certificate_case13(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -950,9 +974,11 @@ static void rsp_certificate_case14(void **state) session_info->secured_message_context, LIBSPDM_SESSION_STATE_ESTABLISHED); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -1080,9 +1106,11 @@ static void rsp_certificate_case16(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -1127,9 +1155,11 @@ static void rsp_certificate_case17(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; @@ -1190,9 +1220,11 @@ static void rsp_certificate_case18(void **state) #else void *data; size_t data_size; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } assert_int_equal(spdm_response->remainder_length, data_size); free(data); @@ -1223,9 +1255,11 @@ static void rsp_certificate_case19(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_AFTER_DIGESTS; spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CERT_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; diff --git a/unit_test/test_spdm_responder/challenge_auth.c b/unit_test/test_spdm_responder/challenge_auth.c index 9c99f54038d..cbd621850c2 100644 --- a/unit_test/test_spdm_responder/challenge_auth.c +++ b/unit_test/test_spdm_responder/challenge_auth.c @@ -87,9 +87,11 @@ static void rsp_challenge_auth_case1(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -165,9 +167,11 @@ static void rsp_challenge_auth_case3(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -221,9 +225,11 @@ static void rsp_challenge_auth_case4(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -279,9 +285,11 @@ static void rsp_challenge_auth_case5(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -341,9 +349,11 @@ static void rsp_challenge_auth_case6(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -859,9 +869,11 @@ static void rsp_challenge_auth_case15(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -992,7 +1004,9 @@ static void rsp_challenge_auth_case17(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1)) { + return; + } spdm_context->local_context.local_public_key_provision = data1; spdm_context->local_context.local_public_key_provision_size = data_size1; @@ -1057,9 +1071,11 @@ static void rsp_challenge_auth_case18(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_secret_lib_challenge_opaque_data_size = 0; @@ -1145,9 +1161,11 @@ static void rsp_challenge_auth_case19(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/test_spdm_responder/csr.c b/unit_test/test_spdm_responder/csr.c index d4cb9698983..5fb4e52083f 100644 --- a/unit_test/test_spdm_responder/csr.c +++ b/unit_test/test_spdm_responder/csr.c @@ -67,8 +67,10 @@ void libspdm_gen_req_info() req_info_p = right_req_info; req_info_len = sizeof(right_req_info); - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, - &req_info_pkinfo, &req_info_pkinfo_len); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, + &req_info_pkinfo, &req_info_pkinfo_len)) { + return; + } /*concat right_req_info*/ libspdm_copy_mem(req_info_p, req_info_len, req_info_sequence, sizeof(req_info_sequence)); diff --git a/unit_test/test_spdm_responder/encap_challenge.c b/unit_test/test_spdm_responder/encap_challenge.c index aa84582570d..2a2a3d3aa10 100644 --- a/unit_test/test_spdm_responder/encap_challenge.c +++ b/unit_test/test_spdm_responder/encap_challenge.c @@ -36,10 +36,12 @@ static void rsp_encap_challenge_case1(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } libspdm_reset_message_mut_c(spdm_context); #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; @@ -118,10 +120,12 @@ static void rsp_encap_challenge_case2(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_b(spdm_context); libspdm_reset_message_c(spdm_context); @@ -186,10 +190,12 @@ static void rsp_encap_challenge_case3(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_b(spdm_context); libspdm_reset_message_c(spdm_context); @@ -253,10 +259,12 @@ static void rsp_encap_challenge_case4(void **state) spdm_context->connection_info.connection_state = LIBSPDM_CONNECTION_STATE_NEGOTIATED; spdm_context->connection_info.capability.flags = 0; spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_b(spdm_context); libspdm_reset_message_c(spdm_context); @@ -327,7 +335,9 @@ static void rsp_encap_challenge_case5(void **state) spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size); + if (!libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.peer_public_key_provision = data; spdm_context->local_context.peer_public_key_provision_size = data_size; @@ -399,10 +409,12 @@ static void rsp_encap_challenge_case6(void **state) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHAL_CAP; spdm_context->connection_info.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } libspdm_reset_message_mut_c(spdm_context); #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; diff --git a/unit_test/test_spdm_responder/encap_get_certificate.c b/unit_test/test_spdm_responder/encap_get_certificate.c index e7ec92530fe..1bb9d3f9a8a 100644 --- a/unit_test/test_spdm_responder/encap_get_certificate.c +++ b/unit_test/test_spdm_responder/encap_get_certificate.c @@ -72,10 +72,12 @@ static void rsp_encap_get_certificate_case1(void **state) SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P256; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return; + } } portion_length = LIBSPDM_MAX_CERT_CHAIN_BLOCK_LEN; @@ -223,10 +225,12 @@ static void rsp_encap_get_certificate_case3(void **state) SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P256; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return; + } } portion_length = 0; @@ -322,10 +326,12 @@ static void rsp_encap_get_certificate_case4(void **state) SPDM_ALGORITHMS_BASE_ASYM_ALGO_TPM_ALG_ECDSA_ECC_NIST_P256; if (m_libspdm_local_certificate_chain == NULL) { - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return; + } } portion_length = LIBSPDM_MAX_CERT_CHAIN_BLOCK_LEN + 1; /* Fail response: responder return portion_length > spdm_request.length*/ @@ -414,10 +420,12 @@ static void rsp_encap_get_certificate_case5(void **state) spdm_context->local_context.peer_root_cert_provision_size[0] = root_cert_size; spdm_context->local_context.peer_root_cert_provision[0] = root_cert; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &m_libspdm_local_certificate_chain, - &m_libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &m_libspdm_local_certificate_chain, + &m_libspdm_local_certificate_chain_size, NULL, NULL)) { + return; + } portion_length = LIBSPDM_MAX_CERT_CHAIN_BLOCK_LEN; remainder_length = diff --git a/unit_test/test_spdm_responder/encap_get_endpoint_info.c b/unit_test/test_spdm_responder/encap_get_endpoint_info.c index 9c53998207a..51828a8f694 100644 --- a/unit_test/test_spdm_responder/encap_get_endpoint_info.c +++ b/unit_test/test_spdm_responder/encap_get_endpoint_info.c @@ -61,9 +61,11 @@ static void rsp_encap_get_endpoint_info_case1(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_encap_e(spdm_context, NULL); @@ -229,7 +231,9 @@ static void rsp_encap_get_endpoint_info_case2(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback; - libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size); + if (!libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.peer_public_key_provision = data; spdm_context->local_context.peer_public_key_provision_size = data_size; @@ -382,9 +386,11 @@ static void rsp_encap_get_endpoint_info_case4(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_PSK_CAP; spdm_context->connection_info.capability.flags |= diff --git a/unit_test/test_spdm_responder/encapsulated_request.c b/unit_test/test_spdm_responder/encapsulated_request.c index 1de3a325f91..41cd9951f70 100644 --- a/unit_test/test_spdm_responder/encapsulated_request.c +++ b/unit_test/test_spdm_responder/encapsulated_request.c @@ -67,10 +67,12 @@ static void rsp_encapsulated_request_case1(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -133,10 +135,12 @@ static void rsp_encapsulated_request_case2(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_ENCAP_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -301,10 +305,12 @@ static void rsp_encapsulated_request_case5(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -367,10 +373,12 @@ static void rsp_encapsulated_request_case6(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -498,10 +506,12 @@ static void rsp_encapsulated_request_case8(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; @@ -595,10 +605,12 @@ static void rsp_encapsulated_response_ack_case1(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; spdm_context->encap_context.request_id = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -684,10 +696,12 @@ static void rsp_encapsulated_response_ack_case2(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; spdm_context->encap_context.request_id = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -703,10 +717,12 @@ static void rsp_encapsulated_response_ack_case2(void **State) spdm_response_requester_certificate = (void *)(temp_buf + sizeof(spdm_deliver_encapsulated_response_request_t)); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &libspdm_local_certificate_chain, - &libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &libspdm_local_certificate_chain, + &libspdm_local_certificate_chain_size, NULL, NULL)) { + return; + } portion_length = LIBSPDM_MAX_CERT_CHAIN_BLOCK_LEN; remainder_length = (uint16_t)(libspdm_local_certificate_chain_size - @@ -772,10 +788,12 @@ static void rsp_encapsulated_response_ack_case3(void **State) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; spdm_context->encap_context.request_id = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -971,10 +989,12 @@ static void rsp_encapsulated_response_ack_case7(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; @@ -990,10 +1010,12 @@ static void rsp_encapsulated_response_ack_case7(void **State) spdm_response_requester_certificate = (void *)(temp_buf + sizeof(spdm_deliver_encapsulated_response_request_t)); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &libspdm_local_certificate_chain, - &libspdm_local_certificate_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &libspdm_local_certificate_chain, + &libspdm_local_certificate_chain_size, NULL, NULL)) { + return; + } portion_length = LIBSPDM_MAX_CERT_CHAIN_BLOCK_LEN; remainder_length = (uint16_t)(libspdm_local_certificate_chain_size - @@ -1064,10 +1086,12 @@ static void rsp_encapsulated_response_ack_case8(void **State) spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CERT_CAP; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_12 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; diff --git a/unit_test/test_spdm_responder/end_session_ack.c b/unit_test/test_spdm_responder/end_session_ack.c index 28dc692c18c..d34c39c7a79 100644 --- a/unit_test/test_spdm_responder/end_session_ack.c +++ b/unit_test/test_spdm_responder/end_session_ack.c @@ -54,9 +54,11 @@ static void rsp_end_session_ack_case1(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -113,9 +115,11 @@ static void rsp_end_session_ack_case2(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -175,9 +179,11 @@ static void rsp_end_session_ack_case3(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -238,9 +244,11 @@ static void rsp_end_session_ack_case4(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -303,9 +311,11 @@ static void rsp_end_session_ack_case5(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -371,9 +381,11 @@ static void rsp_end_session_ack_case6(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -432,9 +444,11 @@ static void rsp_end_session_ack_case7(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -511,9 +525,11 @@ static void rsp_end_session_ack_case8(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/test_spdm_responder/endpoint_info.c b/unit_test/test_spdm_responder/endpoint_info.c index a8a2abe8cd0..3fc116539e4 100644 --- a/unit_test/test_spdm_responder/endpoint_info.c +++ b/unit_test/test_spdm_responder/endpoint_info.c @@ -102,9 +102,11 @@ static void rsp_endpoint_info_case1(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; session_info = NULL; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_key_pair_id[i] = 1; spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; @@ -216,7 +218,9 @@ static void rsp_endpoint_info_case2(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; session_info = NULL; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.local_public_key_provision = data; spdm_context->local_context.local_public_key_provision_size = data_size; spdm_context->local_context.peer_public_key_provision = data; @@ -309,9 +313,11 @@ static void rsp_endpoint_info_case3(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; session_info = NULL; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_key_pair_id[i] = 1; spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; @@ -495,9 +501,11 @@ static void rsp_endpoint_info_case5(void **state) session_info->secured_message_context, LIBSPDM_SESSION_STATE_ESTABLISHED); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_key_pair_id[i] = 1; spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; diff --git a/unit_test/test_spdm_responder/error_test/encap_get_endpoint_info_err.c b/unit_test/test_spdm_responder/error_test/encap_get_endpoint_info_err.c index 4899525a3af..c06bafeea6d 100644 --- a/unit_test/test_spdm_responder/error_test/encap_get_endpoint_info_err.c +++ b/unit_test/test_spdm_responder/error_test/encap_get_endpoint_info_err.c @@ -56,9 +56,11 @@ void libspdm_test_responder_encap_get_endpoint_info_err_case1(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback_in_err; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_encap_e(spdm_context, NULL); @@ -149,9 +151,11 @@ void libspdm_test_responder_encap_get_endpoint_info_err_case2(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback_in_err; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_encap_e(spdm_context, NULL); @@ -312,9 +316,11 @@ void libspdm_test_responder_encap_get_endpoint_info_err_case3(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback_in_err; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_encap_e(spdm_context, NULL); @@ -402,9 +408,11 @@ void libspdm_test_responder_encap_get_endpoint_info_err_case4(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->get_endpoint_info_callback = get_endpoint_info_callback_in_err; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } libspdm_reset_message_a(spdm_context); libspdm_reset_message_encap_e(spdm_context, NULL); diff --git a/unit_test/test_spdm_responder/error_test/endpoint_info_err.c b/unit_test/test_spdm_responder/error_test/endpoint_info_err.c index e29b62d2112..0dd7613896d 100644 --- a/unit_test/test_spdm_responder/error_test/endpoint_info_err.c +++ b/unit_test/test_spdm_responder/error_test/endpoint_info_err.c @@ -797,9 +797,11 @@ void libspdm_test_responder_endpoint_info_err_case13(void **state) spdm_context->connection_info.algorithm.base_asym_algo = m_libspdm_use_asym_algo; session_info = NULL; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; spdm_context->local_context.local_cert_chain_provision[i] = data; diff --git a/unit_test/test_spdm_responder/finish_rsp.c b/unit_test/test_spdm_responder/finish_rsp.c index ca78dfbb90b..4027c96b453 100644 --- a/unit_test/test_spdm_responder/finish_rsp.c +++ b/unit_test/test_spdm_responder/finish_rsp.c @@ -128,9 +128,11 @@ void rsp_finish_rsp_case1(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -237,9 +239,11 @@ void rsp_finish_rsp_case3(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -341,9 +345,11 @@ void rsp_finish_rsp_case4(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -447,9 +453,11 @@ void rsp_finish_rsp_case5(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -558,9 +566,11 @@ void rsp_finish_rsp_case6(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -654,9 +664,11 @@ void rsp_finish_rsp_case7(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -783,17 +795,21 @@ void rsp_finish_rsp_case8(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -931,9 +947,11 @@ void rsp_finish_rsp_case9(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1034,9 +1052,11 @@ void rsp_finish_rsp_case10(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1131,9 +1151,11 @@ void rsp_finish_rsp_case11(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1217,9 +1239,11 @@ void rsp_finish_rsp_case12(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1318,9 +1342,11 @@ void rsp_finish_rsp_case14(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1427,17 +1453,21 @@ void rsp_finish_rsp_case15(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -1571,17 +1601,21 @@ void rsp_finish_rsp_case16(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -1704,9 +1738,11 @@ void rsp_finish_rsp_case17(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1822,11 +1858,15 @@ void rsp_finish_rsp_case18(void **state) spdm_context->connection_info.algorithm.req_base_asym_alg = m_libspdm_use_req_asym_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1)) { + return; + } spdm_context->local_context.local_public_key_provision = data1; spdm_context->local_context.local_public_key_provision_size = data_size1; g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data2, &data_size2); + if (!libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data2, &data_size2)) { + return; + } spdm_context->local_context.peer_public_key_provision = data2; spdm_context->local_context.peer_public_key_provision_size = data_size2; @@ -1952,17 +1992,21 @@ void rsp_finish_rsp_case19(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -2105,17 +2149,21 @@ void rsp_finish_rsp_case20(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED_WITH_ENCAP_REQUEST; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -2254,9 +2302,11 @@ void rsp_finish_rsp_case21(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -2362,17 +2412,21 @@ void rsp_finish_rsp_case22(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -2513,9 +2567,11 @@ void rsp_finish_rsp_case23(void** state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; spdm_context->spdm_10_11_verify_signature_endian = @@ -2523,9 +2579,11 @@ void rsp_finish_rsp_case23(void** state) libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -2668,9 +2726,11 @@ void rsp_finish_rsp_case24(void** state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; spdm_context->spdm_10_11_verify_signature_endian = @@ -2678,9 +2738,11 @@ void rsp_finish_rsp_case24(void** state) libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -2824,9 +2886,11 @@ void rsp_finish_rsp_case25(void** state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; spdm_context->spdm_10_11_verify_signature_endian = @@ -2834,9 +2898,11 @@ void rsp_finish_rsp_case25(void** state) libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -2978,9 +3044,11 @@ void rsp_finish_rsp_case26(void** state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; spdm_context->spdm_10_11_verify_signature_endian = @@ -2988,9 +3056,11 @@ void rsp_finish_rsp_case26(void** state) libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -3137,9 +3207,11 @@ void rsp_finish_rsp_case27(void** state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; spdm_context->spdm_10_11_verify_signature_endian = @@ -3147,9 +3219,11 @@ void rsp_finish_rsp_case27(void** state) libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -3296,9 +3370,11 @@ void rsp_finish_rsp_case28(void** state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; spdm_context->spdm_10_11_verify_signature_endian = @@ -3306,9 +3382,11 @@ void rsp_finish_rsp_case28(void** state) libspdm_reset_message_a(spdm_context); g_key_exchange_start_mut_auth = SPDM_KEY_EXCHANGE_RESPONSE_MUT_AUTH_REQUESTED; - libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_req_asym_algo, &data2, - &data_size2, NULL, NULL); + if (!libspdm_read_requester_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_req_asym_algo, &data2, + &data_size2, NULL, NULL)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, sizeof(spdm_context->connection_info.peer_used_cert_chain[0].buffer), @@ -3452,9 +3530,11 @@ void rsp_finish_rsp_case29(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -3558,9 +3638,11 @@ void rsp_finish_rsp_case30(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -3684,9 +3766,11 @@ void rsp_finish_rsp_case31(void **state) g_generate_finish_opaque_data = true; libspdm_secret_lib_finish_opaque_data_size = 8; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/test_spdm_responder/heartbeat_ack.c b/unit_test/test_spdm_responder/heartbeat_ack.c index 36835f67eae..e62ff781f04 100644 --- a/unit_test/test_spdm_responder/heartbeat_ack.c +++ b/unit_test/test_spdm_responder/heartbeat_ack.c @@ -49,9 +49,11 @@ static void rsp_heartbeat_ack_case1(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -109,9 +111,11 @@ static void rsp_heartbeat_ack_case2(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -171,9 +175,11 @@ static void rsp_heartbeat_ack_case3(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -234,9 +240,11 @@ static void rsp_heartbeat_ack_case4(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -299,9 +307,11 @@ static void rsp_heartbeat_ack_case5(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -367,9 +377,11 @@ static void rsp_heartbeat_ack_case6(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -428,9 +440,11 @@ static void rsp_heartbeat_ack_case7(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/test_spdm_responder/key_exchange_rsp.c b/unit_test/test_spdm_responder/key_exchange_rsp.c index 2867d56e4c0..6fb2b211af2 100644 --- a/unit_test/test_spdm_responder/key_exchange_rsp.c +++ b/unit_test/test_spdm_responder/key_exchange_rsp.c @@ -131,9 +131,11 @@ static void rsp_key_exchange_rsp_case1(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -211,9 +213,11 @@ static void rsp_key_exchange_rsp_case2(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -284,9 +288,11 @@ static void rsp_key_exchange_rsp_case3(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -358,9 +364,11 @@ static void rsp_key_exchange_rsp_case4(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -434,9 +442,11 @@ static void rsp_key_exchange_rsp_case5(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -514,9 +524,11 @@ static void rsp_key_exchange_rsp_case6(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -586,9 +598,11 @@ static void rsp_key_exchange_rsp_case7(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -691,9 +705,11 @@ static void rsp_key_exchange_rsp_case8(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -798,9 +814,11 @@ static void rsp_key_exchange_rsp_case9(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -903,9 +921,11 @@ static void rsp_key_exchange_rsp_case10(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -986,9 +1006,11 @@ static void rsp_key_exchange_rsp_case11(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1071,10 +1093,14 @@ static void rsp_key_exchange_rsp_case14(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data1, &data_size1)) { + return; + } spdm_context->local_context.local_public_key_provision = data1; spdm_context->local_context.local_public_key_provision_size = data_size1; - libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data2, &data_size2); + if (!libspdm_read_requester_public_key(m_libspdm_use_req_asym_algo, &data2, &data_size2)) { + return; + } spdm_context->local_context.peer_public_key_provision = data2; spdm_context->local_context.peer_public_key_provision_size = data_size2; @@ -1160,9 +1186,11 @@ static void rsp_key_exchange_rsp_case15(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1256,9 +1284,11 @@ static void rsp_key_exchange_rsp_case16(void **state) spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1352,9 +1382,11 @@ static void rsp_key_exchange_rsp_case17(void **state) spdm_context->session_info, 0, INVALID_SESSION_ID, false); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1435,9 +1467,11 @@ static void rsp_key_exchange_rsp_case18(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1514,9 +1548,11 @@ static void rsp_key_exchange_rsp_case19(void **state) spdm_context->connection_info.algorithm.other_params_support = SPDM_ALGORITHMS_OPAQUE_DATA_FORMAT_1; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1638,9 +1674,11 @@ static void rsp_key_exchange_rsp_case20(void **state) spdm_context->session_info, 0, INVALID_SESSION_ID, false); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1731,9 +1769,11 @@ static void rsp_key_exchange_rsp_case21(void **state) spdm_context->session_info, 0, INVALID_SESSION_ID, false); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1825,9 +1865,11 @@ static void rsp_key_exchange_rsp_case22(void **state) libspdm_session_info_init(spdm_context, spdm_context->session_info, INVALID_SESSION_ID, 0, false); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1910,9 +1952,11 @@ static void rsp_key_exchange_rsp_case23(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_11 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1992,9 +2036,11 @@ static void rsp_key_exchange_rsp_case24(void **state) spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.version = SPDM_MESSAGE_VERSION_13 << SPDM_VERSION_NUMBER_SHIFT_BIT; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -2087,9 +2133,11 @@ static void rsp_key_exchange_rsp_case25(void **state) spdm_context->session_info, 0, INVALID_SESSION_ID, false); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/test_spdm_responder/measurements.c b/unit_test/test_spdm_responder/measurements.c index d0748a4294d..3f461c856b7 100644 --- a/unit_test/test_spdm_responder/measurements.c +++ b/unit_test/test_spdm_responder/measurements.c @@ -1026,9 +1026,11 @@ static void rsp_measurements_case18(void **state) SPDM_VERSION_NUMBER_SHIFT_BIT; libspdm_reset_message_m(spdm_context, NULL); libspdm_secret_lib_meas_opaque_data_size = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } measurment_sig_size = SPDM_NONCE_SIZE + sizeof(uint16_t) + 0 + libspdm_get_asym_signature_size(m_libspdm_use_asym_algo); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { @@ -1447,9 +1449,11 @@ static void rsp_measurements_case26(void **state) SPDM_VERSION_NUMBER_SHIFT_BIT; libspdm_reset_message_m(spdm_context, NULL); libspdm_secret_lib_meas_opaque_data_size = 0; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } measurment_sig_size = SPDM_NONCE_SIZE + sizeof(uint16_t) + 0 + libspdm_get_asym_signature_size(m_libspdm_use_asym_algo); for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { @@ -1524,9 +1528,11 @@ static void rsp_measurements_case27(void **state) /*opaque data*/ libspdm_secret_lib_meas_opaque_data_size = 0x20; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } measurment_sig_size = SPDM_NONCE_SIZE + sizeof(uint16_t) + libspdm_secret_lib_meas_opaque_data_size + libspdm_get_asym_signature_size(m_libspdm_use_asym_algo); @@ -1645,7 +1651,9 @@ static void rsp_measurements_case28(void **state) /*opaque data*/ libspdm_secret_lib_meas_opaque_data_size = 0x20; - libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size); + if (!libspdm_read_responder_public_key(m_libspdm_use_asym_algo, &data, &data_size)) { + return; + } spdm_context->local_context.local_public_key_provision = data; spdm_context->local_context.local_public_key_provision_size = data_size; @@ -1854,10 +1862,12 @@ static void rsp_measurements_case30(void** state) assert_int_equal(spdm_response->header.request_response_code, SPDM_MEASUREMENTS); assert_int_equal(spdm_response->header.param1, LIBSPDM_MEASUREMENT_BLOCK_NUMBER); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &data, &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &data, &data_size, + &hash, &hash_size)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, @@ -1970,10 +1980,12 @@ static void rsp_measurements_case31(void** state) assert_int_equal(spdm_response->header.request_response_code, SPDM_MEASUREMENTS); assert_int_equal(spdm_response->header.param1, LIBSPDM_MEASUREMENT_BLOCK_NUMBER); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &data, &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &data, &data_size, + &hash, &hash_size)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, @@ -2086,10 +2098,12 @@ static void rsp_measurements_case32(void** state) assert_int_equal(spdm_response->header.request_response_code, SPDM_MEASUREMENTS); assert_int_equal(spdm_response->header.param1, LIBSPDM_MEASUREMENT_BLOCK_NUMBER); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &data, &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &data, &data_size, + &hash, &hash_size)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, @@ -2207,10 +2221,12 @@ static void rsp_measurements_case33(void** state) assert_int_equal(spdm_response->header.request_response_code, SPDM_MEASUREMENTS); assert_int_equal(spdm_response->header.param1, LIBSPDM_MEASUREMENT_BLOCK_NUMBER); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &data, &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &data, &data_size, + &hash, &hash_size)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, @@ -2329,10 +2345,12 @@ static void rsp_measurements_case34(void** state) assert_int_equal(spdm_response->header.request_response_code, SPDM_MEASUREMENTS); assert_int_equal(spdm_response->header.param1, LIBSPDM_MEASUREMENT_BLOCK_NUMBER); - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &data, &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &data, &data_size, + &hash, &hash_size)) { + return; + } #if LIBSPDM_RECORD_TRANSCRIPT_DATA_SUPPORT spdm_context->connection_info.peer_used_cert_chain[0].buffer_size = data_size; libspdm_copy_mem(spdm_context->connection_info.peer_used_cert_chain[0].buffer, @@ -2488,9 +2506,11 @@ static void rsp_measurements_case36(void **state) spdm_context->connection_info.multi_key_conn_rsp = true; libspdm_reset_message_m(spdm_context, NULL); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, NULL, NULL)) { + return; + } for (int i = 0; i < SPDM_MAX_SLOT_COUNT; i++) { spdm_context->local_context.local_cert_chain_provision_size[i] = data_size; spdm_context->local_context.local_cert_chain_provision[i] = data; diff --git a/unit_test/test_spdm_responder/psk_exchange_rsp.c b/unit_test/test_spdm_responder/psk_exchange_rsp.c index 642694fe4ef..6ac278c6010 100644 --- a/unit_test/test_spdm_responder/psk_exchange_rsp.c +++ b/unit_test/test_spdm_responder/psk_exchange_rsp.c @@ -146,9 +146,11 @@ static void rsp_psk_exchange_rsp_case1(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -221,9 +223,11 @@ static void rsp_psk_exchange_rsp_case2(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -288,9 +292,11 @@ static void rsp_psk_exchange_rsp_case3(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -356,9 +362,11 @@ static void rsp_psk_exchange_rsp_case4(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -426,9 +434,11 @@ static void rsp_psk_exchange_rsp_case5(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -500,9 +510,11 @@ static void rsp_psk_exchange_rsp_case6(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -566,9 +578,11 @@ static void rsp_psk_exchange_rsp_case7(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -661,9 +675,11 @@ static void rsp_psk_exchange_rsp_case8(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -748,9 +764,11 @@ static void rsp_psk_exchange_rsp_case9(void **state) spdm_context->session_info, 0, INVALID_SESSION_ID, true); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -837,9 +855,11 @@ static void rsp_psk_exchange_rsp_case10(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -945,9 +965,11 @@ static void rsp_psk_exchange_rsp_case11(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1048,9 +1070,11 @@ static void rsp_psk_exchange_rsp_case12(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1133,9 +1157,11 @@ static void rsp_psk_exchange_rsp_case13(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1209,9 +1235,11 @@ static void rsp_psk_exchange_rsp_case14(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1285,9 +1313,11 @@ static void rsp_psk_exchange_rsp_case15(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1364,9 +1394,11 @@ static void rsp_psk_exchange_rsp_case16(void **state) spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; spdm_context->connection_info.algorithm.key_schedule = m_libspdm_use_key_schedule_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1438,9 +1470,11 @@ static void rsp_psk_exchange_rsp_case17(void **state) spdm_context->session_info, 0, INVALID_SESSION_ID, true); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1537,9 +1571,11 @@ static void rsp_psk_exchange_rsp_case18(void **state) spdm_context->session_info, 0, INVALID_SESSION_ID, true); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/test_spdm_responder/psk_finish_rsp.c b/unit_test/test_spdm_responder/psk_finish_rsp.c index e8b6a91425a..c703662c866 100644 --- a/unit_test/test_spdm_responder/psk_finish_rsp.c +++ b/unit_test/test_spdm_responder/psk_finish_rsp.c @@ -96,9 +96,11 @@ static void rsp_psk_finish_rsp_case1(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -186,9 +188,11 @@ static void rsp_psk_finish_rsp_case2(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -279,9 +283,11 @@ static void rsp_psk_finish_rsp_case3(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -375,9 +381,11 @@ static void rsp_psk_finish_rsp_case4(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -473,9 +481,11 @@ static void rsp_psk_finish_rsp_case5(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -576,9 +586,11 @@ static void rsp_psk_finish_rsp_case6(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -664,9 +676,11 @@ static void rsp_psk_finish_rsp_case7(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -779,9 +793,11 @@ static void rsp_psk_finish_rsp_case8(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -874,9 +890,11 @@ static void rsp_psk_finish_rsp_case9(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -966,9 +984,11 @@ static void rsp_psk_finish_rsp_case10(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1051,9 +1071,11 @@ static void rsp_psk_finish_rsp_case11(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1140,9 +1162,11 @@ static void rsp_psk_finish_rsp_case12(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1236,9 +1260,11 @@ static void rsp_psk_finish_rsp_case13(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1330,9 +1356,11 @@ static void rsp_psk_finish_rsp_case14(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1428,9 +1456,11 @@ static void rsp_psk_finish_rsp_case15(void **state) m_libspdm_use_measurement_hash_algo; spdm_context->connection_info.algorithm.dhe_named_group = m_libspdm_use_dhe_algo; spdm_context->connection_info.algorithm.aead_cipher_suite = m_libspdm_use_aead_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; @@ -1532,9 +1562,11 @@ static void rsp_psk_finish_rsp_case16(void **state) g_generate_psk_finish_opaque_data = true; libspdm_secret_lib_psk_finish_opaque_data_size = 8; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data1, - &data_size1, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data1, + &data_size1, NULL, NULL)) { + return; + } spdm_context->local_context.local_cert_chain_provision[0] = data1; spdm_context->local_context.local_cert_chain_provision_size[0] = data_size1; diff --git a/unit_test/test_spdm_responder/receive_send.c b/unit_test/test_spdm_responder/receive_send.c index 0688e402d9f..7631094314d 100644 --- a/unit_test/test_spdm_responder/receive_send.c +++ b/unit_test/test_spdm_responder/receive_send.c @@ -86,11 +86,13 @@ void libspdm_test_responder_receive_send_rsp_case1(void** state) | SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP); spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; @@ -367,11 +369,13 @@ void libspdm_test_responder_receive_send_rsp_case4(void** state) | SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_CHUNK_CAP); spdm_context->connection_info.capability.flags |= SPDM_GET_CAPABILITIES_REQUEST_FLAGS_CHUNK_CAP; - libspdm_read_responder_public_certificate_chain( - m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &data, - &data_size, - &hash, &hash_size); + if (!libspdm_read_responder_public_certificate_chain( + m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &data, + &data_size, + &hash, &hash_size)) { + return; + } spdm_context->local_context.local_cert_chain_provision_size[0] = data_size; spdm_context->local_context.local_cert_chain_provision[0] = data; diff --git a/unit_test/test_spdm_responder/set_certificate_rsp.c b/unit_test/test_spdm_responder/set_certificate_rsp.c index c9d912cd05d..3d945f7621d 100644 --- a/unit_test/test_spdm_responder/set_certificate_rsp.c +++ b/unit_test/test_spdm_responder/set_certificate_rsp.c @@ -56,9 +56,11 @@ static void rsp_set_certificate_rsp_case1(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -91,10 +93,12 @@ static void rsp_set_certificate_rsp_case1(void **state) /*test overwrite same slot_id cert*/ /*read a different cert_chain*/ - libspdm_read_responder_public_certificate_chain_per_slot(1, m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, - &cert_chain_slot_1, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_per_slot(1, m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, + &cert_chain_slot_1, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -176,9 +180,11 @@ static void rsp_set_certificate_rsp_case2(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } spdm_set_certificate_request_t *m_libspdm_set_certificate_request; m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + @@ -244,9 +250,11 @@ static void rsp_set_certificate_rsp_case3(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } spdm_set_certificate_request_t *m_libspdm_set_certificate_request; m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + @@ -315,9 +323,11 @@ static void rsp_set_certificate_rsp_case4(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -399,9 +409,11 @@ static void rsp_set_certificate_rsp_case5(void **state) session_info->secured_message_context, LIBSPDM_SESSION_STATE_ESTABLISHED); - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -465,9 +477,11 @@ static void rsp_set_certificate_rsp_case6(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -537,9 +551,11 @@ static void rsp_set_certificate_rsp_case7(void **state) spdm_context->local_context.capability.flags |= SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_ALIAS_CERT_CAP; /*read alias cert(alias cert chain is partial)*/ - libspdm_read_responder_public_certificate_chain_alias_cert_till_dev_cert_ca( - m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, - &cert_chain, &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain_alias_cert_till_dev_cert_ca( + m_libspdm_use_hash_algo, m_libspdm_use_asym_algo, + &cert_chain, &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -608,9 +624,11 @@ static void rsp_set_certificate_rsp_case8(void **state) spdm_context->last_spdm_request_session_id_valid = false; g_in_trusted_environment = true; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -679,9 +697,11 @@ static void rsp_set_certificate_rsp_case9(void **state) spdm_context->last_spdm_request_session_id_valid = false; g_in_trusted_environment = false; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -864,9 +884,11 @@ static void rsp_set_certificate_rsp_case11(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -935,9 +957,11 @@ static void rsp_set_certificate_rsp_case12(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size); @@ -1006,9 +1030,11 @@ static void rsp_set_certificate_rsp_case13(void **state) spdm_context->local_context.algorithm.base_hash_algo = m_libspdm_use_hash_algo; spdm_context->local_context.algorithm.base_asym_algo = m_libspdm_use_asym_algo; - libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, - m_libspdm_use_asym_algo, &cert_chain, - &cert_chain_size, NULL, NULL); + if (!libspdm_read_responder_public_certificate_chain(m_libspdm_use_hash_algo, + m_libspdm_use_asym_algo, &cert_chain, + &cert_chain_size, NULL, NULL)) { + return; + } m_libspdm_set_certificate_request = malloc(sizeof(spdm_set_certificate_request_t) + cert_chain_size);