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