diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-11-03 20:31:18 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-11-03 20:31:18 -0700 |
commit | b138da4a4b9d57b850ca4d0061969f5e3299861d (patch) | |
tree | 3e20a6f4a29bfe91b2b51f416673d9fad1e0b7c7 /progs/getpcaps.c | |
download | libcap-b138da4a4b9d57b850ca4d0061969f5e3299861d.tar.gz libcap-b138da4a4b9d57b850ca4d0061969f5e3299861d.tar.bz2 libcap-b138da4a4b9d57b850ca4d0061969f5e3299861d.zip |
Imported Upstream version 2.22upstream/2.22
Diffstat (limited to 'progs/getpcaps.c')
-rw-r--r-- | progs/getpcaps.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/progs/getpcaps.c b/progs/getpcaps.c new file mode 100644 index 0000000..e405a92 --- /dev/null +++ b/progs/getpcaps.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1997,2008 Andrew G. Morgan <morgan@kernel.org> + * + * This displays the capabilities of given target process(es). + */ + +#include <sys/types.h> +#include <errno.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <sys/capability.h> + +static void usage(void) +{ + fprintf(stderr, +"usage: getcaps <pid> [<pid> ...]\n\n" +" This program displays the capabilities on the queried process(es).\n" +" The capabilities are displayed in the cap_from_text(3) format.\n\n" +"[Copyright (c) 1997-8,2007 Andrew G. Morgan <morgan@kernel.org>]\n" + ); + exit(1); +} + +int main(int argc, char **argv) +{ + int retval = 0; + + if (argc < 2) { + usage(); + } + + for ( ++argv; --argc > 0; ++argv ) { + ssize_t length; + int pid; + cap_t cap_d; + + pid = atoi(argv[0]); + + cap_d = cap_get_pid(pid); + if (cap_d == NULL) { + fprintf(stderr, "Failed to get cap's for proccess %d:" + " (%s)\n", pid, strerror(errno)); + retval = 1; + continue; + } else { + char *result = cap_to_text(cap_d, &length); + fprintf(stderr, "Capabilities for `%s': %s\n", *argv, result); + cap_free(result); + result = NULL; + cap_free(cap_d); + } + } + + return retval; +} |