From 57ffc35a8e0264507118b9839a499375f416260c Mon Sep 17 00:00:00 2001 From: netblue30 Date: Wed, 21 Mar 2018 08:56:54 -0400 Subject: added sandbox name support in firemon --- src/lib/pid.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'src/lib') diff --git a/src/lib/pid.c b/src/lib/pid.c index 0b2f402d1..f138efc8c 100644 --- a/src/lib/pid.c +++ b/src/lib/pid.c @@ -21,6 +21,7 @@ #include "../include/pid.h" #include #include +#include #include #include #include @@ -165,6 +166,10 @@ doexit: return rv; } +// todo: RUN_FIREJAIL_NAME_DIR is borrowed from src/firejail/firejail.h +// move it in a common place +#define RUN_FIREJAIL_NAME_DIR "/run/firejail/name" + static void print_elem(unsigned index, int nowrap) { // get terminal size struct winsize sz; @@ -184,14 +189,40 @@ static void print_elem(unsigned index, int nowrap) { char *cmd = pid_proc_cmdline(index); char *user = pid_get_user_name(uid); char *allocated = user; + + // extract sandbox name - pid == index + char *sandbox_name = ""; + char *fname; + if (asprintf(&fname, "%s/%d", RUN_FIREJAIL_NAME_DIR, index) == -1) + errExit("asprintf"); + struct stat s; + if (stat(fname, &s) == 0) { + FILE *fp = fopen(fname, "r"); + if (fp) { + sandbox_name = malloc(s.st_size + 1); + if (!sandbox_name) + errExit("malloc"); + char *rv = fgets(sandbox_name, s.st_size + 1, fp); + if (!rv) + *sandbox_name = '\0'; + else { + char *ptr = strchr(sandbox_name, '\n'); + if (ptr) + *ptr = '\0'; + } + fclose(fp); + } + } + free(fname); + if (user ==NULL) user = ""; if (cmd) { if (col < 4 || nowrap) - printf("%s%u:%s:%s\n", indent, index, user, cmd); + printf("%s%u:%s:%s:%s\n", indent, index, user, sandbox_name, cmd); else { char *out; - if (asprintf(&out, "%s%u:%s:%s\n", indent, index, user, cmd) == -1) + if (asprintf(&out, "%s%u:%s:%s:%s\n", indent, index, user, sandbox_name, cmd) == -1) errExit("asprintf"); int len = strlen(out); if (len > col) { -- cgit v1.2.3-54-g00ecf