From 1069127f5fe6a49db17147c328e0976e32656b75 Mon Sep 17 00:00:00 2001 From: "Kelvin M. Klann" Date: Sun, 29 Jun 2025 18:47:06 -0300 Subject: [PATCH] procevent.c: replace printf with debug_prctl Replace almost all debug `printf` calls with `debug_prctl` to reduce the amount of duplication and `ifdefs`. Note: There is one debug `printf` call that uses a different message format, so it is left as is. Command used to search and replace: $ perl -0 -pi -e 's/#ifdef DEBUG_PRCTL\n(\s+)printf\("%s: %d, ([^\n]+)", __FUNCTION__, __LINE__([^\n]+)\n#endif/${1}debug_prctl("$2"$3/g; \ s/(debug_prctl\("event[^\n]+)/\t\t\t\t$1\n/g' \ src/firemon/procevent.c Relates to #6792. --- src/firemon/procevent.c | 75 +++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 48 deletions(-) diff --git a/src/firemon/procevent.c b/src/firemon/procevent.c index 89f8058d5..2bb0ba7a9 100644 --- a/src/firemon/procevent.c +++ b/src/firemon/procevent.c @@ -44,9 +44,7 @@ #endif static int pid_is_firejail(pid_t pid) { -#ifdef DEBUG_PRCTL - printf("%s: %d, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("pid %d\n", pid); uid_t rv = 0; // open /proc/self/comm @@ -67,9 +65,7 @@ static int pid_is_firejail(pid_t pid) { rv = 1; } -#ifdef DEBUG_PRCTL - printf("%s: %d, comm %s, rv %d\n", __FUNCTION__, __LINE__, buf, rv); -#endif + debug_prctl("comm %s, rv %d\n", buf, rv); if (rv) { // open /proc/pid/cmdline file char *fname; @@ -77,9 +73,7 @@ static int pid_is_firejail(pid_t pid) { if (asprintf(&fname, "/proc/%d/cmdline", pid) == -1) errExit("asprintf"); if ((fd = open(fname, O_RDONLY)) < 0) { -#ifdef DEBUG_PRCTL - printf("%s: %d, comm %s, rv %d\n", __FUNCTION__, __LINE__, buf, rv); -#endif + debug_prctl("comm %s, rv %d\n", buf, rv); free(fname); goto doexit; } @@ -90,9 +84,7 @@ static int pid_is_firejail(pid_t pid) { unsigned char buffer[BUFLEN]; ssize_t len; if ((len = read(fd, buffer, sizeof(buffer) - 1)) <= 0) { -#ifdef DEBUG_PRCTL - printf("%s: %d, comm %s, rv %d\n", __FUNCTION__, __LINE__, buf, rv); -#endif + debug_prctl("comm %s, rv %d\n", buf, rv); close(fd); goto doexit; } @@ -157,9 +149,7 @@ printf("start=#%s#, ptr=#%s#, flip rv %d\n", start, ptr, rv); } doexit: -#ifdef DEBUG_PRCTL - printf("%s: %d, return %d\n", __FUNCTION__, __LINE__, rv); -#endif + debug_prctl("return %d\n", rv); fclose(fp); free(file); return rv; @@ -313,17 +303,15 @@ static void __attribute__((noreturn)) procevent_monitor(const int sock, pid_t my int nodisplay = 0; switch (proc_ev->what) { case PROC_EVENT_FORK: -#ifdef DEBUG_PRCTL - printf("%s: %d, event fork\n", __FUNCTION__, __LINE__); -#endif + debug_prctl("event fork\n"); + if (proc_ev->event_data.fork.child_pid != proc_ev->event_data.fork.child_tgid) continue; // this is a thread, not a process pid = proc_ev->event_data.fork.parent_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event fork, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event fork, pid %d\n", pid); + if (pids[pid].level > 0) { child = proc_ev->event_data.fork.child_tgid; child %= max_pids; @@ -337,9 +325,8 @@ static void __attribute__((noreturn)) procevent_monitor(const int sock, pid_t my case PROC_EVENT_EXEC: pid = proc_ev->event_data.exec.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event exec, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event exec, pid %d\n", pid); + if (pids[pid].level == -1) { pids[pid].level = 0; // start tracking } @@ -352,18 +339,16 @@ static void __attribute__((noreturn)) procevent_monitor(const int sock, pid_t my continue; // this is a thread, not a process pid = proc_ev->event_data.exit.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event exit, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event exit, pid %d\n", pid); + remove_pid = 1; sprintf(lineptr, " exit"); break; case PROC_EVENT_UID: pid = proc_ev->event_data.id.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event uid, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event uid, pid %d\n", pid); + if (pids[pid].level == 1 || pids[pids[pid].parent].level == 1) { sprintf(lineptr, "\n"); @@ -379,9 +364,8 @@ static void __attribute__((noreturn)) procevent_monitor(const int sock, pid_t my case PROC_EVENT_GID: pid = proc_ev->event_data.id.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event gid, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event gid, pid %d\n", pid); + if (pids[pid].level == 1 || pids[pids[pid].parent].level == 1) { sprintf(lineptr, "\n"); @@ -397,9 +381,8 @@ static void __attribute__((noreturn)) procevent_monitor(const int sock, pid_t my case PROC_EVENT_SID: pid = proc_ev->event_data.sid.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event sid, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event sid, pid %d\n", pid); + sprintf(lineptr, " sid "); break; @@ -407,18 +390,16 @@ static void __attribute__((noreturn)) procevent_monitor(const int sock, pid_t my #ifdef PROC_EVENT_COREDUMP case PROC_EVENT_COREDUMP: pid = proc_ev->event_data.coredump.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event coredump, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event coredump, pid %d\n", pid); + sprintf(lineptr, " coredump "); break; #endif /* PROC_EVENT_COREDUMP */ case PROC_EVENT_COMM: pid = proc_ev->event_data.comm.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event comm, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event comm, pid %d\n", pid); + if (proc_ev->event_data.comm.process_pid != proc_ev->event_data.comm.process_tgid) continue; // this is a thread, not a process @@ -436,16 +417,14 @@ static void __attribute__((noreturn)) procevent_monitor(const int sock, pid_t my case PROC_EVENT_PTRACE: pid = proc_ev->event_data.ptrace.process_tgid; -#ifdef DEBUG_PRCTL - printf("%s: %d, event ptrace, pid %d\n", __FUNCTION__, __LINE__, pid); -#endif + debug_prctl("event ptrace, pid %d\n", pid); + sprintf(lineptr, " ptrace "); break; default: -#ifdef DEBUG_PRCTL - printf("%s: %d, event unknown\n", __FUNCTION__, __LINE__); -#endif + debug_prctl("event unknown\n"); + sprintf(lineptr, "\n"); continue; }