diff mbox series

[OpenWrt-Devel,procd,1/2] trace: Use properly sized type for PTRACE_GETEVENTMSG

Message ID 20180730073110.28309-1-sojkam1@fel.cvut.cz
State Accepted
Delegated to: John Crispin
Headers show
Series [OpenWrt-Devel,procd,1/2] trace: Use properly sized type for PTRACE_GETEVENTMSG | expand

Commit Message

Michal Sojka July 30, 2018, 7:31 a.m. UTC
From: Michal Sojka <michal.sojka@cvut.cz>

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 <michal.sojka@cvut.cz>
---
 trace/trace.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff mbox series

Patch

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);