113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <stdlib.h> 213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <stdio.h> 313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <string.h> 413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <errno.h> 513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <selinux/selinux.h> 613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <selinux/get_context_list.h> 713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleint main(int argc, char **argv) 913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle{ 1013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle char *seuser = NULL, *level = NULL; 119eb9c9327563014ad6a807814e7975424642d5b9Stephen Smalley char **contextlist; 1213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle int rc, n, i; 1313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 1413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle if (argc != 3) { 1513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fprintf(stderr, "usage: %s linuxuser fromcon\n", argv[0]); 1613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(1); 1713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle } 1813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle 1913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle rc = getseuserbyname(argv[1], &seuser, &level); 2013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle if (rc) { 2113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fprintf(stderr, "getseuserbyname failed: %s\n", 2213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle strerror(errno)); 2313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(2); 2413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle } 2513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle printf("seuser: %s, level %s\n", seuser, level); 2613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle n = get_ordered_context_list_with_level(seuser, level, argv[2], 2713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle &contextlist); 2813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle if (n <= 0) { 2913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle fprintf(stderr, 3013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle "get_ordered_context_list_with_level failed: %s\n", 3113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle strerror(errno)); 3213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(3); 3313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle } 3413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle free(seuser); 3513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle free(level); 3613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle for (i = 0; i < n; i++) 3713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle printf("Context %d\t%s\n", i, contextlist[i]); 3813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle freeconary(contextlist); 3913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle exit(0); 4013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle} 41