aboutsummaryrefslogtreecommitdiffstats
path: root/src/firemon/seccomp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/firemon/seccomp.c')
-rw-r--r--src/firemon/seccomp.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/firemon/seccomp.c b/src/firemon/seccomp.c
index 71771c72d..f11c624ea 100644
--- a/src/firemon/seccomp.c
+++ b/src/firemon/seccomp.c
@@ -22,10 +22,8 @@
22#define MAXBUF 4098 22#define MAXBUF 4098
23static void print_seccomp(int pid) { 23static void print_seccomp(int pid) {
24 char *file; 24 char *file;
25 if (asprintf(&file, "/proc/%d/status", pid) == -1) { 25 if (asprintf(&file, "/proc/%d/status", pid) == -1)
26 errExit("asprintf"); 26 errExit("asprintf");
27 exit(1);
28 }
29 27
30 FILE *fp = fopen(file, "r"); 28 FILE *fp = fopen(file, "r");
31 if (!fp) { 29 if (!fp) {
@@ -48,17 +46,15 @@ static void print_seccomp(int pid) {
48 free(file); 46 free(file);
49} 47}
50 48
51void seccomp(pid_t pid) { 49void seccomp(pid_t pid, int print_procs) {
52 if (getuid() == 0)
53 firemon_drop_privs();
54
55 pid_read(pid); // include all processes 50 pid_read(pid); // include all processes
56 51
57 // print processes 52 // print processes
58 int i; 53 int i;
59 for (i = 0; i < max_pids; i++) { 54 for (i = 0; i < max_pids; i++) {
60 if (pids[i].level == 1) { 55 if (pids[i].level == 1) {
61 pid_print_list(i, 0); 56 if (print_procs || pid == 0)
57 pid_print_list(i, 0);
62 int child = find_child(i); 58 int child = find_child(i);
63 if (child != -1) 59 if (child != -1)
64 print_seccomp(child); 60 print_seccomp(child);