From 5f57223913a9657bc1ff14284b01ffcb8dbe0eba Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Mon, 30 Jul 2018 09:31:09 +0200 Subject: [PATCH] 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 --- trace/trace.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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); -- 2.25.1