LCOV - code coverage report
Current view: top level - library/spdm_responder_lib - libspdm_rsp_error.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 24 24
Test Date: 2025-06-29 08:09:00 Functions: 100.0 % 2 2

            Line data    Source code
       1              : /**
       2              :  *  Copyright Notice:
       3              :  *  Copyright 2021-2022 DMTF. All rights reserved.
       4              :  *  License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/libspdm/blob/main/LICENSE.md
       5              :  **/
       6              : 
       7              : #include "internal/libspdm_responder_lib.h"
       8              : 
       9          364 : libspdm_return_t libspdm_generate_error_response(const void *spdm_context,
      10              :                                                  uint8_t error_code,
      11              :                                                  uint8_t error_data,
      12              :                                                  size_t *response_size,
      13              :                                                  void *response)
      14              : {
      15              :     spdm_error_response_t *spdm_response;
      16              : 
      17          364 :     LIBSPDM_ASSERT(*response_size >= sizeof(spdm_error_response_t));
      18          364 :     *response_size = sizeof(spdm_error_response_t);
      19          364 :     spdm_response = response;
      20              : 
      21          364 :     spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
      22          364 :     if (spdm_response->header.spdm_version == 0) {
      23              :         /* if version is not negotiated, then use default version 1.0 */
      24            1 :         spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
      25              :     }
      26          364 :     spdm_response->header.request_response_code = SPDM_ERROR;
      27          364 :     spdm_response->header.param1 = error_code;
      28          364 :     spdm_response->header.param2 = error_data;
      29              : 
      30          364 :     if (spdm_response->header.spdm_version <= SPDM_MESSAGE_VERSION_11) {
      31          258 :         LIBSPDM_ASSERT ((error_code != SPDM_ERROR_CODE_RESPONSE_TOO_LARGE) &&
      32              :                         (error_code != SPDM_ERROR_CODE_LARGE_RESPONSE));
      33              :     }
      34              : 
      35          364 :     return LIBSPDM_STATUS_SUCCESS;
      36              : }
      37              : 
      38           17 : libspdm_return_t libspdm_generate_extended_error_response(
      39              :     const void *spdm_context, uint8_t error_code, uint8_t error_data,
      40              :     size_t extended_error_data_size, const uint8_t *extended_error_data,
      41              :     size_t *response_size, void *response)
      42              : {
      43              :     spdm_error_response_t *spdm_response;
      44              :     size_t response_capacity;
      45              : 
      46           17 :     LIBSPDM_ASSERT(*response_size >=
      47              :                    sizeof(spdm_error_response_t) + extended_error_data_size);
      48           17 :     response_capacity = *response_size;
      49           17 :     *response_size = sizeof(spdm_error_response_t) + extended_error_data_size;
      50           17 :     spdm_response = response;
      51              : 
      52           17 :     spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
      53           17 :     spdm_response->header.request_response_code = SPDM_ERROR;
      54           17 :     spdm_response->header.param1 = error_code;
      55           17 :     spdm_response->header.param2 = error_data;
      56           17 :     libspdm_copy_mem(spdm_response + 1, response_capacity - sizeof(spdm_error_response_t),
      57              :                      extended_error_data, extended_error_data_size);
      58              : 
      59           17 :     return LIBSPDM_STATUS_SUCCESS;
      60              : }
        

Generated by: LCOV version 2.0-1