1*2d543d20SAndroid Build Coastguard Worker #include <stdio.h> 2*2d543d20SAndroid Build Coastguard Worker #include <stdlib.h> 3*2d543d20SAndroid Build Coastguard Worker 4*2d543d20SAndroid Build Coastguard Worker #include <selinux/avc.h> 5*2d543d20SAndroid Build Coastguard Worker 6*2d543d20SAndroid Build Coastguard Worker main(int argc,char * argv[])7*2d543d20SAndroid Build Coastguard Workerint main(int argc __attribute__ ((unused)), 8*2d543d20SAndroid Build Coastguard Worker char* argv[] __attribute__ ((unused))) { 9*2d543d20SAndroid Build Coastguard Worker int rc; 10*2d543d20SAndroid Build Coastguard Worker 11*2d543d20SAndroid Build Coastguard Worker /* 12*2d543d20SAndroid Build Coastguard Worker * Do not use netlink as fallback, since selinux_status_policyload(3) 13*2d543d20SAndroid Build Coastguard Worker * works only after a first message has been received. 14*2d543d20SAndroid Build Coastguard Worker */ 15*2d543d20SAndroid Build Coastguard Worker rc = selinux_status_open(/*fallback=*/0); 16*2d543d20SAndroid Build Coastguard Worker if (rc < 0) { 17*2d543d20SAndroid Build Coastguard Worker fprintf(stderr, "%s: failed to open SELinux status map: %m\n", argv[0]); 18*2d543d20SAndroid Build Coastguard Worker return EXIT_FAILURE; 19*2d543d20SAndroid Build Coastguard Worker } 20*2d543d20SAndroid Build Coastguard Worker 21*2d543d20SAndroid Build Coastguard Worker rc = selinux_status_policyload(); 22*2d543d20SAndroid Build Coastguard Worker if (rc < 0) 23*2d543d20SAndroid Build Coastguard Worker fprintf(stderr, "%s: failed to read policyload from SELinux status page: %m\n", argv[0]); 24*2d543d20SAndroid Build Coastguard Worker else 25*2d543d20SAndroid Build Coastguard Worker printf("%d\n", rc); 26*2d543d20SAndroid Build Coastguard Worker 27*2d543d20SAndroid Build Coastguard Worker selinux_status_close(); 28*2d543d20SAndroid Build Coastguard Worker 29*2d543d20SAndroid Build Coastguard Worker return (rc < 0) ? EXIT_FAILURE : EXIT_SUCCESS; 30*2d543d20SAndroid Build Coastguard Worker } 31