LCOV - code coverage report
Current view: top level - spdm_responder_lib - libspdm_rsp_error.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 24 24
Test Date: 2026-10-01 20:56:25 Functions: 100.0 % 2 2
Branches: 66.7 % 12 8

             Branch data     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                 :         574 : 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         [ -  + ]:         574 :     LIBSPDM_ASSERT(*response_size >= sizeof(spdm_error_response_t));
      18                 :         574 :     *response_size = sizeof(spdm_error_response_t);
      19                 :         574 :     spdm_response = response;
      20                 :             : 
      21                 :         574 :     spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
      22         [ +  + ]:         574 :     if (spdm_response->header.spdm_version == 0) {
      23                 :             :         /* if version is not negotiated, then use default version 1.0 */
      24                 :          12 :         spdm_response->header.spdm_version = SPDM_MESSAGE_VERSION_10;
      25                 :             :     }
      26                 :         574 :     spdm_response->header.request_response_code = SPDM_ERROR;
      27                 :         574 :     spdm_response->header.param1 = error_code;
      28                 :         574 :     spdm_response->header.param2 = error_data;
      29                 :             : 
      30         [ +  + ]:         574 :     if (spdm_response->header.spdm_version <= SPDM_MESSAGE_VERSION_11) {
      31   [ +  -  -  + ]:         373 :         LIBSPDM_ASSERT ((error_code != SPDM_ERROR_CODE_RESPONSE_TOO_LARGE) &&
      32                 :             :                         (error_code != SPDM_ERROR_CODE_LARGE_RESPONSE));
      33                 :             :     }
      34                 :             : 
      35                 :         574 :     return LIBSPDM_STATUS_SUCCESS;
      36                 :             : }
      37                 :             : 
      38                 :          19 : 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         [ -  + ]:          19 :     LIBSPDM_ASSERT(*response_size >=
      47                 :             :                    sizeof(spdm_error_response_t) + extended_error_data_size);
      48                 :          19 :     response_capacity = *response_size;
      49                 :          19 :     *response_size = sizeof(spdm_error_response_t) + extended_error_data_size;
      50                 :          19 :     spdm_response = response;
      51                 :             : 
      52                 :          19 :     spdm_response->header.spdm_version = libspdm_get_connection_version (spdm_context);
      53                 :          19 :     spdm_response->header.request_response_code = SPDM_ERROR;
      54                 :          19 :     spdm_response->header.param1 = error_code;
      55                 :          19 :     spdm_response->header.param2 = error_data;
      56                 :          19 :     libspdm_copy_mem(spdm_response + 1, response_capacity - sizeof(spdm_error_response_t),
      57                 :             :                      extended_error_data, extended_error_data_size);
      58                 :             : 
      59                 :          19 :     return LIBSPDM_STATUS_SUCCESS;
      60                 :             : }
        

Generated by: LCOV version 2.0-1