]> granicus.if.org Git - strace/commitdiff
Add paranoia check before passing a long to pid2tcb(int pid)
authorDenys Vlasenko <dvlasenk@redhat.com>
Thu, 4 Jul 2013 07:26:24 +0000 (09:26 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Thu, 4 Jul 2013 07:26:24 +0000 (09:26 +0200)
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
strace.c

index f5ce18ded3fb63acf8fa6d04deda4a657a187c1d..a489db43e52c3dcc370ce39b514e83a3a7ad89cc 100644 (file)
--- a/strace.c
+++ b/strace.c
@@ -2097,6 +2097,9 @@ trace(void)
 
                        if (ptrace(PTRACE_GETEVENTMSG, pid, NULL, (long) &old_pid) < 0)
                                goto dont_switch_tcbs;
+                       /* Avoid truncation in pid2tcb() param passing */
+                       if (old_pid > UINT_MAX)
+                               goto dont_switch_tcbs;
                        if (old_pid <= 0 || old_pid == pid)
                                goto dont_switch_tcbs;
                        execve_thread = pid2tcb(old_pid);