1 #include <sepol/sepol.h> 2 #include <unistd.h> 3 #include <sys/types.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 #include <errno.h> 8 9 void usage(char*) __attribute__((noreturn)); 10 11 void usage(char *progname) 12 { 13 printf("usage: %s policy context\n", progname); 14 exit(1); 15 } 16 17 int main(int argc, char **argv) 18 { 19 FILE *fp; 20 21 if (argc != 3) 22 usage(argv[0]); 23 24 fp = fopen(argv[1], "r"); 25 if (!fp) { 26 fprintf(stderr, "Can't open '%s': %s\n", 27 argv[1], strerror(errno)); 28 exit(1); 29 } 30 if (sepol_set_policydb_from_file(fp) < 0) { 31 fprintf(stderr, "Error while processing %s: %s\n", 32 argv[1], strerror(errno)); 33 exit(1); 34 } 35 fclose(fp); 36 37 if (sepol_check_context(argv[2]) < 0) { 38 fprintf(stderr, "%s is not valid\n", argv[2]); 39 exit(1); 40 } 41 42 printf("%s is valid\n", argv[2]); 43 exit(0); 44 } 45