/** @file Sample UnitTest built for execution on a Host machine. This test case dereferences a NULL pointer that is caught by a sanitizer. Copyright (c) 2024, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #define UNIT_TEST_NAME "Sample Unit Test Sanitize NULL Pointer" #define UNIT_TEST_VERSION "0.1" /** Sample unit test that dereferences a NULL pointer. @param[in] Context [Optional] An optional parameter that enables: 1) test-case reuse with varied parameters and 2) test-case re-entry for Target tests that need a reboot. This parameter is a VOID* and it is the responsibility of the test author to ensure that the contents are well understood by all test cases that may consume it. @retval UNIT_TEST_PASSED The Unit test has completed and the test case was successful. @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed. **/ UNIT_TEST_STATUS EFIAPI SanitizeNullAddress ( IN UNIT_TEST_CONTEXT Context ) { *(volatile UINT8 *)(NULL) = 0; return UNIT_TEST_PASSED; } /** Initialize the unit test framework, suite, and unit tests for the sample unit tests and run the unit tests. @retval EFI_SUCCESS All test cases were dispatched. @retval EFI_OUT_OF_RESOURCES There are not enough resources available to initialize the unit tests. **/ EFI_STATUS EFIAPI UefiTestMain ( VOID ) { EFI_STATUS Status; UNIT_TEST_FRAMEWORK_HANDLE Framework; UNIT_TEST_SUITE_HANDLE SanitizeTests; Framework = NULL; DEBUG ((DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME, UNIT_TEST_VERSION)); // // Start setting up the test framework for running the tests. // Status = InitUnitTestFramework (&Framework, UNIT_TEST_NAME, gEfiCallerBaseName, UNIT_TEST_VERSION); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status = %r\n", Status)); goto EXIT; } // // Populate the Macro Tests with ASSERT() enabled // Status = CreateUnitTestSuite (&SanitizeTests, Framework, "Sanitize tests", "Sanitize tests", NULL, NULL); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for SanitizeTests\n")); Status = EFI_OUT_OF_RESOURCES; goto EXIT; } AddTestCase (SanitizeTests, "Sanitize NULL Address", "SanitizeNullAddress", SanitizeNullAddress, NULL, NULL, NULL); // // Execute the tests. // Status = RunAllTestSuites (Framework); EXIT: if (Framework) { FreeUnitTestFramework (Framework); } return Status; } /** Standard POSIX C entry point for host based unit test execution. **/ int main ( int argc, char *argv[] ) { return UefiTestMain (); }