1255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sepol/sepol.h>
2255e72915d4cbddceb435e13d81601755714e9fSE Android#include <unistd.h>
3255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sys/types.h>
4255e72915d4cbddceb435e13d81601755714e9fSE Android#include <stdio.h>
5255e72915d4cbddceb435e13d81601755714e9fSE Android#include <stdlib.h>
6255e72915d4cbddceb435e13d81601755714e9fSE Android#include <string.h>
7255e72915d4cbddceb435e13d81601755714e9fSE Android#include <errno.h>
8255e72915d4cbddceb435e13d81601755714e9fSE Android
9b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalleyvoid usage(char*) __attribute__((noreturn));
10b1db49d77789525ac1f4e73e978e35694f21ea1aStephen Smalley
11255e72915d4cbddceb435e13d81601755714e9fSE Androidvoid usage(char *progname)
12255e72915d4cbddceb435e13d81601755714e9fSE Android{
13255e72915d4cbddceb435e13d81601755714e9fSE Android	printf("usage:  %s policy context\n", progname);
14255e72915d4cbddceb435e13d81601755714e9fSE Android	exit(1);
15255e72915d4cbddceb435e13d81601755714e9fSE Android}
16255e72915d4cbddceb435e13d81601755714e9fSE Android
17255e72915d4cbddceb435e13d81601755714e9fSE Androidint main(int argc, char **argv)
18255e72915d4cbddceb435e13d81601755714e9fSE Android{
19255e72915d4cbddceb435e13d81601755714e9fSE Android	FILE *fp;
20255e72915d4cbddceb435e13d81601755714e9fSE Android
21255e72915d4cbddceb435e13d81601755714e9fSE Android	if (argc != 3)
22255e72915d4cbddceb435e13d81601755714e9fSE Android		usage(argv[0]);
23255e72915d4cbddceb435e13d81601755714e9fSE Android
24255e72915d4cbddceb435e13d81601755714e9fSE Android	fp = fopen(argv[1], "r");
25255e72915d4cbddceb435e13d81601755714e9fSE Android	if (!fp) {
26255e72915d4cbddceb435e13d81601755714e9fSE Android		fprintf(stderr, "Can't open '%s':  %s\n",
27255e72915d4cbddceb435e13d81601755714e9fSE Android			argv[1], strerror(errno));
28255e72915d4cbddceb435e13d81601755714e9fSE Android		exit(1);
29255e72915d4cbddceb435e13d81601755714e9fSE Android	}
30255e72915d4cbddceb435e13d81601755714e9fSE Android	if (sepol_set_policydb_from_file(fp) < 0) {
31255e72915d4cbddceb435e13d81601755714e9fSE Android		fprintf(stderr, "Error while processing %s:  %s\n",
32255e72915d4cbddceb435e13d81601755714e9fSE Android			argv[1], strerror(errno));
33255e72915d4cbddceb435e13d81601755714e9fSE Android		exit(1);
34255e72915d4cbddceb435e13d81601755714e9fSE Android	}
35255e72915d4cbddceb435e13d81601755714e9fSE Android	fclose(fp);
36255e72915d4cbddceb435e13d81601755714e9fSE Android
37255e72915d4cbddceb435e13d81601755714e9fSE Android	if (sepol_check_context(argv[2]) < 0) {
38255e72915d4cbddceb435e13d81601755714e9fSE Android		fprintf(stderr, "%s is not valid\n", argv[2]);
39255e72915d4cbddceb435e13d81601755714e9fSE Android		exit(1);
40255e72915d4cbddceb435e13d81601755714e9fSE Android	}
41255e72915d4cbddceb435e13d81601755714e9fSE Android
42255e72915d4cbddceb435e13d81601755714e9fSE Android	printf("%s is valid\n", argv[2]);
43255e72915d4cbddceb435e13d81601755714e9fSE Android	exit(0);
44255e72915d4cbddceb435e13d81601755714e9fSE Android}
45