xref: /xnu-11215.41.3/tests/nvram_tests/nvram_ve_reset.c (revision 33de042d024d46de5ff4e89f2471de6608e37fa4)
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