Skip to content

Commit

Permalink
Fix Param2 of PSK_EXCHANGE request message was mistaken as Param1.
Browse files Browse the repository at this point in the history
Move the check to the front to return error much sooner.
Fix: #2268

Signed-off-by: Zhao, Zhiqiang <[email protected]>
  • Loading branch information
Zhiqiang520 committed Jul 26, 2023
1 parent 1d933bc commit 82ff899
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
14 changes: 7 additions & 7 deletions library/spdm_responder_lib/libspdm_rsp_psk_exchange.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,13 @@ libspdm_return_t libspdm_get_response_psk_exchange(libspdm_context_t *spdm_conte

measurement_summary_hash_size = libspdm_get_measurement_summary_hash_size(
spdm_context, false, spdm_request->header.param1);
if ((measurement_summary_hash_size == 0) &&
(spdm_request->header.param1 != SPDM_PSK_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH)) {
return libspdm_generate_error_response(spdm_context,
SPDM_ERROR_CODE_INVALID_REQUEST,
0, response_size, response);
}

hmac_size = libspdm_get_hash_size(spdm_context->connection_info.algorithm.base_hash_algo);

if (request_size < sizeof(spdm_psk_exchange_request_t)) {
Expand Down Expand Up @@ -319,13 +326,6 @@ libspdm_return_t libspdm_get_response_psk_exchange(libspdm_context_t *spdm_conte
result = true;
}

if ((measurement_summary_hash_size == 0) &&
(spdm_request->header.param2 != SPDM_PSK_EXCHANGE_REQUEST_NO_MEASUREMENT_SUMMARY_HASH)) {
libspdm_free_session_id(spdm_context, session_id);
return libspdm_generate_error_response(spdm_context,
SPDM_ERROR_CODE_INVALID_REQUEST,
0, response_size, response);
}
if (!result) {
libspdm_free_session_id(spdm_context, session_id);
return libspdm_generate_error_response(spdm_context,
Expand Down
2 changes: 1 addition & 1 deletion unit_test/test_spdm_responder/psk_exchange.c
Original file line number Diff line number Diff line change
Expand Up @@ -1237,7 +1237,7 @@ void libspdm_test_responder_psk_exchange_case12(void **state)
spdm_response = (void *)response;
assert_int_equal(spdm_response->header.request_response_code,
SPDM_ERROR);
assert_int_equal(spdm_response->header.param1, SPDM_ERROR_CODE_UNSPECIFIED);
assert_int_equal(spdm_response->header.param1, SPDM_ERROR_CODE_INVALID_REQUEST);



Expand Down

0 comments on commit 82ff899

Please sign in to comment.