Skip to content

Commit

Permalink
Fix EVENT_TYPES issues
Browse files Browse the repository at this point in the history
Fix #2641.
Fix #2642.
Fix #2643.

These fixes include a workaround for #2645 in https://github.com/DMTF/libspdm/blob/main/unit_test/test_spdm_requester/get_event_types.c. When that issue is fixed the workaround should be reverted.

Signed-off-by: Steven Bellock <[email protected]>
  • Loading branch information
steven-bellock committed Apr 2, 2024
1 parent d6a8003 commit d089009
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 6 deletions.
2 changes: 1 addition & 1 deletion include/internal/libspdm_requester_lib.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/**
* Copyright Notice:
* Copyright 2021-2022 DMTF. All rights reserved.
* Copyright 2021-2024 DMTF. All rights reserved.
* License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
**/

Expand Down
7 changes: 6 additions & 1 deletion library/spdm_requester_lib/libspdm_req_get_event_types.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ static libspdm_return_t libspdm_try_get_event_types(libspdm_context_t *spdm_cont
spdm_request->header.request_response_code = SPDM_GET_SUPPORTED_EVENT_TYPES;
spdm_request->header.param1 = 0;
spdm_request->header.param2 = 0;
spdm_request_size = sizeof(spdm_heartbeat_request_t);
spdm_request_size = sizeof(spdm_get_supported_event_types_request_t);

/* -=[Send Request Phase]=- */
status = libspdm_send_spdm_request(spdm_context, &session_id, spdm_request_size, spdm_request);
Expand Down Expand Up @@ -125,6 +125,11 @@ static libspdm_return_t libspdm_try_get_event_types(libspdm_context_t *spdm_cont
status = LIBSPDM_STATUS_BUFFER_TOO_SMALL;
goto receive_done;
}
if (spdm_response_size != sizeof(spdm_supported_event_types_response_t) +
(uint64_t)spdm_response->supported_event_groups_list_len) {
status = LIBSPDM_STATUS_INVALID_MSG_SIZE;
goto receive_done;
}

/* -=[Process Response Phase]=- */
*event_group_count = spdm_response->header.param1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ libspdm_return_t libspdm_get_response_supported_event_types(libspdm_context_t *s
spdm_request = request;

/* -=[Check Parameters Phase]=- */
LIBSPDM_ASSERT(spdm_request->header.request_response_code == SPDM_SUPPORTED_EVENT_TYPES);
LIBSPDM_ASSERT(spdm_request->header.request_response_code == SPDM_GET_SUPPORTED_EVENT_TYPES);

/* -=[Verify State Phase]=- */
if (spdm_context->response_state != LIBSPDM_RESPONSE_STATE_NORMAL) {
Expand Down
8 changes: 7 additions & 1 deletion unit_test/test_spdm_requester/get_event_types.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,14 @@ static libspdm_return_t receive_message(

generate_dmtf_event_group(spdm_response + 1, &event_group_total_bytes,
true, true, true, true);
spdm_response->supported_event_groups_list_len = event_group_total_bytes;

{
/* Workaround. See issue https://github.com/DMTF/libspdm/issues/2645. The below code
* can be removed when the issue has been resolved. */
event_group_total_bytes += 2;
}

spdm_response->supported_event_groups_list_len = event_group_total_bytes;
spdm_response_size = sizeof(spdm_supported_event_types_response_t) +
event_group_total_bytes;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ static void libspdm_test_responder_supported_event_types_err_case1(void **state)
spdm_context->local_context.capability.flags &= ~SPDM_GET_CAPABILITIES_RESPONSE_FLAGS_EVENT_CAP;

spdm_request.header.spdm_version = SPDM_MESSAGE_VERSION_13;
spdm_request.header.request_response_code = SPDM_SUPPORTED_EVENT_TYPES;
spdm_request.header.request_response_code = SPDM_GET_SUPPORTED_EVENT_TYPES;
spdm_request.header.param1 = 0;
spdm_request.header.param2 = 0;

Expand Down
2 changes: 1 addition & 1 deletion unit_test/test_spdm_responder/supported_event_types.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ static void libspdm_test_responder_supported_event_types_case1(void **state)
set_standard_state(spdm_context);

spdm_request.header.spdm_version = SPDM_MESSAGE_VERSION_13;
spdm_request.header.request_response_code = SPDM_SUPPORTED_EVENT_TYPES;
spdm_request.header.request_response_code = SPDM_GET_SUPPORTED_EVENT_TYPES;
spdm_request.header.param1 = 0;
spdm_request.header.param2 = 0;

Expand Down

0 comments on commit d089009

Please sign in to comment.