]> granicus.if.org Git - strace/commitdiff
2008-05-19 Roland McGrath <roland@redhat.com>
authorRoland McGrath <roland@redhat.com>
Tue, 20 May 2008 01:43:09 +0000 (01:43 +0000)
committerRoland McGrath <roland@redhat.com>
Tue, 20 May 2008 01:43:09 +0000 (01:43 +0000)
* signal.c (sys_kill): When current personality's wordsize is smaller
than native, sign-extend the PID argument from 32 bits.
Fixes RH#430585.

signal.c

index 874e3d52c79cbe18954d6da56d5879ba37549d95..06773321d041074262f382c507418753f2525fba 100644 (file)
--- a/signal.c
+++ b/signal.c
@@ -1735,7 +1735,13 @@ sys_kill(tcp)
 struct tcb *tcp;
 {
        if (entering(tcp)) {
-               tprintf("%ld, %s", tcp->u_arg[0], signame(tcp->u_arg[1]));
+               /*
+                * Sign-extend a 32-bit value when that's what it is.
+                */
+               long pid = tcp->u_arg[0];
+               if (personality_wordsize[current_personality] < sizeof pid)
+                       pid = (long) (int) pid;
+               tprintf("%ld, %s", pid, signame(tcp->u_arg[1]));
        }
        return 0;
 }