113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <sepol/sepol.h> 213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <unistd.h> 313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <sys/types.h> 413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <stdio.h> 513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <stdlib.h> 613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <string.h> 713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <errno.h> 813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 984f6ac246f5980f831a5777d53c0a0bd6ad17d3cStephen Smalleyvoid usage(char*) __attribute__((noreturn)); 1084f6ac246f5980f831a5777d53c0a0bd6ad17d3cStephen Smalley 1113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlevoid usage(char *progname) 1213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle{ 1313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle printf("usage: %s policy context\n", progname); 1413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(1); 1513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle} 1613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 1713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleint main(int argc, char **argv) 1813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle{ 1913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle FILE *fp; 2013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 2113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle if (argc != 3) 2213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle usage(argv[0]); 2313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 2413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fp = fopen(argv[1], "r"); 2513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle if (!fp) { 2613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fprintf(stderr, "Can't open '%s': %s\n", 2713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle argv[1], strerror(errno)); 2813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(1); 2913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle } 3013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle if (sepol_set_policydb_from_file(fp) < 0) { 3113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fprintf(stderr, "Error while processing %s: %s\n", 3213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle argv[1], strerror(errno)); 3313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(1); 3413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle } 3513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fclose(fp); 3613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 3713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle if (sepol_check_context(argv[2]) < 0) { 3813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fprintf(stderr, "%s is not valid\n", argv[2]); 3913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(1); 4013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle } 4113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 4213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle printf("%s is valid\n", argv[2]); 4313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(0); 4413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle} 45