From: Michal Sojka Date: Mon, 30 Jul 2018 07:31:09 +0000 (+0200) Subject: trace: Use properly sized type for PTRACE_GETEVENTMSG X-Git-Url: http://git.openwrt.org/?p=project%2Fprocd.git;a=commitdiff_plain;h=5f57223913a9657bc1ff14284b01ffcb8dbe0eba trace: Use properly sized type for PTRACE_GETEVENTMSG Without this, on 64-bit systems, ptrace call corrupts memory because it stores 64bit value to 32bit pid_t variable. Signed-off-by: Michal Sojka --- diff --git a/trace/trace.c b/trace/trace.c index 27cf108..665c22e 100644 --- a/trace/trace.c +++ b/trace/trace.c @@ -211,7 +211,9 @@ static void tracer_cb(struct uloop_process *c, int ret) (ret >> 8) == (SIGTRAP | (PTRACE_EVENT_CLONE << 8))) { struct tracee *child = calloc(1, sizeof(struct tracee)); - ptrace(PTRACE_GETEVENTMSG, c->pid, 0, &child->proc.pid); + unsigned long msg; + ptrace(PTRACE_GETEVENTMSG, c->pid, 0, &msg); + child->proc.pid = msg; child->proc.cb = tracer_cb; ptrace(ptrace_restart, child->proc.pid, 0, 0); uloop_process_add(&child->proc);