• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 1997,2008 Andrew G. Morgan  <morgan@kernel.org>
3  *
4  * This displays the capabilities of given target process(es).
5  */
6 
7 #include <sys/types.h>
8 #include <errno.h>
9 #include <stdio.h>
10 #include <string.h>
11 #include <stdlib.h>
12 #include <sys/capability.h>
13 
usage(void)14 static void usage(void)
15 {
16     fprintf(stderr,
17 "usage: getcaps <pid> [<pid> ...]\n\n"
18 "  This program displays the capabilities on the queried process(es).\n"
19 "  The capabilities are displayed in the cap_from_text(3) format.\n\n"
20 "[Copyright (c) 1997-8,2007 Andrew G. Morgan  <morgan@kernel.org>]\n"
21 	);
22     exit(1);
23 }
24 
main(int argc,char ** argv)25 int main(int argc, char **argv)
26 {
27     int retval = 0;
28 
29     if (argc < 2) {
30 	usage();
31     }
32 
33     for ( ++argv; --argc > 0; ++argv ) {
34 	ssize_t length;
35 	int pid;
36 	cap_t cap_d;
37 
38 	pid = atoi(argv[0]);
39 
40 	cap_d = cap_get_pid(pid);
41 	if (cap_d == NULL) {
42 		fprintf(stderr, "Failed to get cap's for proccess %d:"
43 			" (%s)\n", pid, strerror(errno));
44 		retval = 1;
45 		continue;
46 	} else {
47 	    char *result = cap_to_text(cap_d, &length);
48 	    fprintf(stderr, "Capabilities for `%s': %s\n", *argv, result);
49 	    cap_free(result);
50 	    result = NULL;
51 	    cap_free(cap_d);
52 	}
53     }
54 
55     return retval;
56 }
57