148761c62SAndrew Jeffery /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ 248761c62SAndrew Jeffery /* Force elision of assert() */ 348761c62SAndrew Jeffery #ifndef NDEBUG 448761c62SAndrew Jeffery #define NDEBUG 548761c62SAndrew Jeffery #endif 648761c62SAndrew Jeffery 748761c62SAndrew Jeffery #include <assert.h> 848761c62SAndrew Jeffery #include <stddef.h> 948761c62SAndrew Jeffery #include <stdint.h> 1048761c62SAndrew Jeffery #include <stdlib.h> 1148761c62SAndrew Jeffery 12*860a43d9SAndrew Jeffery #include "compiler.h" 13*860a43d9SAndrew Jeffery 1448761c62SAndrew Jeffery /* NOLINTNEXTLINE(bugprone-suspicious-include) */ 1548761c62SAndrew Jeffery #include "dsp/bios_table.c" 1648761c62SAndrew Jeffery 1748761c62SAndrew Jeffery /* Satisfy the symbol needs of bios_table.c */ crc32(const void * data LIBPLDM_CC_UNUSED,size_t size LIBPLDM_CC_UNUSED)18*860a43d9SAndrew Jefferyuint32_t crc32(const void* data LIBPLDM_CC_UNUSED, 19*860a43d9SAndrew Jeffery size_t size LIBPLDM_CC_UNUSED) 2048761c62SAndrew Jeffery { 2148761c62SAndrew Jeffery return 0; 2248761c62SAndrew Jeffery } 2348761c62SAndrew Jeffery 2448761c62SAndrew Jeffery /* This is the non-death version of TEST(Iterator, DeathTest) */ main(void)2548761c62SAndrew Jefferyint main(void) 2648761c62SAndrew Jeffery { 2748761c62SAndrew Jeffery struct pldm_bios_attr_table_entry entries[2] = {0}; 2848761c62SAndrew Jeffery struct pldm_bios_table_iter* iter; 2948761c62SAndrew Jeffery int result; 3048761c62SAndrew Jeffery 3148761c62SAndrew Jeffery static_assert(2 * sizeof(entries[0]) == sizeof(entries), ""); 3248761c62SAndrew Jeffery 3348761c62SAndrew Jeffery entries[0].attr_type = PLDM_BIOS_PASSWORD; 3448761c62SAndrew Jeffery entries[1].attr_type = PLDM_BIOS_STRING_READ_ONLY; 3548761c62SAndrew Jeffery 3648761c62SAndrew Jeffery iter = pldm_bios_table_iter_create(entries, sizeof(entries), 3748761c62SAndrew Jeffery PLDM_BIOS_ATTR_TABLE); 3848761c62SAndrew Jeffery 3948761c62SAndrew Jeffery /* 4048761c62SAndrew Jeffery * We expect the test configuration to claim the iterator has reached the 419e3a5d45SManojkiran Eda * end because the there's no entry length descriptor for the 4248761c62SAndrew Jeffery * PLDM_BIOS_PASSWORD entry type. By the attr_able_entry_length() 4348761c62SAndrew Jeffery * implementation this would normally trigger an assert() to uphold that the 4448761c62SAndrew Jeffery * necessary pointers are not NULL. However, we've defined NDEBUG above and 4548761c62SAndrew Jeffery * so the assert() is elided. That should force us down the path of the 4648761c62SAndrew Jeffery * early-exit, which should in-turn yield a `true` result from 4748761c62SAndrew Jeffery * pldm_bios_table_iter_is_end() to prevent further attempts to access 4848761c62SAndrew Jeffery * invalid objects. 4948761c62SAndrew Jeffery */ 5048761c62SAndrew Jeffery result = pldm_bios_table_iter_is_end(iter) ? EXIT_SUCCESS : EXIT_FAILURE; 5148761c62SAndrew Jeffery 5248761c62SAndrew Jeffery pldm_bios_table_iter_free(iter); 5348761c62SAndrew Jeffery 5448761c62SAndrew Jeffery exit(result); 5548761c62SAndrew Jeffery 5648761c62SAndrew Jeffery return 0; 5748761c62SAndrew Jeffery } 58