1 #include <darwintest.h> 2 #include "nvram_helper.h" 3 4 T_GLOBAL_META(T_META_NAMESPACE("xnu.nvram"), 5 T_META_RADAR_COMPONENT_NAME("xnu"), 6 T_META_RADAR_COMPONENT_VERSION("nvram")); 7 8 static io_registry_entry_t optionsRef = IO_OBJECT_NULL; 9 10 // xcrun -sdk iphoneos.internal make -C tests nvram_ve_reset && sudo ./tests/build/sym/nvram_ve_reset 11 12 // Test resetting of nvram with entitlement should erase testEntRst 13 // To reset nvram, call the test with -r argument: 14 // sudo ./tests/build/sym/nvram_ve_reset -n xnu.nvram.TestEntRstEnt -- -r 15 T_DECL(TestEntRstEnt, "Test reset entitled variables") 16 { 17 #if !(__x86_64__) 18 opterr = 0; 19 optind = 0; 20 char * varToTest = "testEntRst"; 21 22 optionsRef = CreateOptionsRef(); 23 24 TestVarOp(OP_SET, varToTest, DefaultSetVal, KERN_SUCCESS, optionsRef); 25 26 if (getopt(argc, argv, "r") == 'r') { 27 TestVarOp(OP_RES, NULL, NULL, KERN_SUCCESS, optionsRef); 28 TestVarOp(OP_GET, varToTest, NULL, KERN_FAILURE, optionsRef); 29 } else { 30 TestVarOp(OP_DEL, varToTest, NULL, KERN_SUCCESS, optionsRef); 31 T_PASS("NVram reset not invoked"); 32 } 33 34 ReleaseOptionsRef(optionsRef); 35 #else 36 T_PASS("Test not supported"); 37 #endif /* !(__x86_64__) */ 38 } 39