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