From 2d4c5318be2f1078370a624c0372540be52e82b8 Mon Sep 17 00:00:00 2001 From: Steven Bellock Date: Thu, 11 Jul 2024 15:24:20 -0700 Subject: [PATCH] Enforce non-zero measurement count Fix #2727. Signed-off-by: Steven Bellock --- library/spdm_responder_lib/libspdm_rsp_measurements.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/library/spdm_responder_lib/libspdm_rsp_measurements.c b/library/spdm_responder_lib/libspdm_rsp_measurements.c index 1cf5241d9fd..9bd0094ac2c 100644 --- a/library/spdm_responder_lib/libspdm_rsp_measurements.c +++ b/library/spdm_responder_lib/libspdm_rsp_measurements.c @@ -252,9 +252,6 @@ libspdm_return_t libspdm_get_response_measurements(libspdm_context_t *spdm_conte measurements, &measurements_size); - LIBSPDM_ASSERT(measurements_size <= SPDM_MAX_MEASUREMENT_RECORD_LENGTH); - LIBSPDM_ASSERT(measurements_size <= meas_opaque_buffer_size); - if (LIBSPDM_STATUS_IS_ERROR(status)) { if (status == LIBSPDM_STATUS_MEAS_INVALID_INDEX) { libspdm_reset_message_m(spdm_context, session_info); @@ -269,6 +266,11 @@ libspdm_return_t libspdm_get_response_measurements(libspdm_context_t *spdm_conte } } + LIBSPDM_ASSERT(measurements_count != 0); + LIBSPDM_ASSERT((measurements_index == 0) || (measurements_size > 0)); + LIBSPDM_ASSERT(measurements_size <= SPDM_MAX_MEASUREMENT_RECORD_LENGTH); + LIBSPDM_ASSERT(measurements_size <= meas_opaque_buffer_size); + if (measurements_index == 0) { measurements_size = 0; }