16cd6a6acSopenharmony_ci#include <sepol/sepol.h> 26cd6a6acSopenharmony_ci#include <unistd.h> 36cd6a6acSopenharmony_ci#include <sys/types.h> 46cd6a6acSopenharmony_ci#include <stdio.h> 56cd6a6acSopenharmony_ci#include <stdlib.h> 66cd6a6acSopenharmony_ci#include <string.h> 76cd6a6acSopenharmony_ci#include <errno.h> 86cd6a6acSopenharmony_ci 96cd6a6acSopenharmony_civoid usage(char*) __attribute__((noreturn)); 106cd6a6acSopenharmony_ci 116cd6a6acSopenharmony_civoid usage(char *progname) 126cd6a6acSopenharmony_ci{ 136cd6a6acSopenharmony_ci printf("usage: %s policy context\n", progname); 146cd6a6acSopenharmony_ci exit(1); 156cd6a6acSopenharmony_ci} 166cd6a6acSopenharmony_ci 176cd6a6acSopenharmony_ciint main(int argc, char **argv) 186cd6a6acSopenharmony_ci{ 196cd6a6acSopenharmony_ci FILE *fp; 206cd6a6acSopenharmony_ci 216cd6a6acSopenharmony_ci if (argc != 3) 226cd6a6acSopenharmony_ci usage(argv[0]); 236cd6a6acSopenharmony_ci 246cd6a6acSopenharmony_ci fp = fopen(argv[1], "r"); 256cd6a6acSopenharmony_ci if (!fp) { 266cd6a6acSopenharmony_ci fprintf(stderr, "Can't open '%s': %s\n", 276cd6a6acSopenharmony_ci argv[1], strerror(errno)); 286cd6a6acSopenharmony_ci exit(1); 296cd6a6acSopenharmony_ci } 306cd6a6acSopenharmony_ci if (sepol_set_policydb_from_file(fp) < 0) { 316cd6a6acSopenharmony_ci fprintf(stderr, "Error while processing %s: %s\n", 326cd6a6acSopenharmony_ci argv[1], strerror(errno)); 336cd6a6acSopenharmony_ci exit(1); 346cd6a6acSopenharmony_ci } 356cd6a6acSopenharmony_ci fclose(fp); 366cd6a6acSopenharmony_ci 376cd6a6acSopenharmony_ci if (sepol_check_context(argv[2]) < 0) { 386cd6a6acSopenharmony_ci fprintf(stderr, "%s is not valid\n", argv[2]); 396cd6a6acSopenharmony_ci exit(1); 406cd6a6acSopenharmony_ci } 416cd6a6acSopenharmony_ci 426cd6a6acSopenharmony_ci printf("%s is valid\n", argv[2]); 436cd6a6acSopenharmony_ci exit(0); 446cd6a6acSopenharmony_ci} 45