Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 19 Jan 2021 16:16:53 -0500
From: Rich Felker <dalias@...c.org>
To: Rasmus Andersson <rasmus@...ion.se>
Cc: musl@...ts.openwall.com
Subject: Re: waitpid (wait4) on Linux 5 returns invalid values

On Tue, Jan 19, 2021 at 12:35:26PM -0800, Rasmus Andersson wrote:
> Relevant parts from disassembly: (objdump --disassemble --source
> --line-numbers a.out)
> 
> 0000000000401f61 <__syscall_cp_c>:
> sccp():
>   401f61: 48 89 f8              mov    %rdi,%rax
>   401f64: 4d 89 c2              mov    %r8,%r10
>   401f67: 48 89 f7              mov    %rsi,%rdi
>   401f6a: 4d 89 c8              mov    %r9,%r8
>   401f6d: 48 89 d6              mov    %rdx,%rsi
>   401f70: 4c 8b 4c 24 08        mov    0x8(%rsp),%r9
>   401f75: 48 89 ca              mov    %rcx,%rdx
>   401f78: 0f 05                 syscall
>   401f7a: c3                    retq
> 
> 0000000000401f7b <__syscall_cp>:
> __syscall_cp():
>   401f7b: e9 e1 ff ff ff        jmpq   401f61 <__syscall_cp_c>
> 
> 00000000004004fd <waitpid>:
> waitpid():
>   ...
>   40051a: e8 5c 1a 00 00        callq  401f7b <__syscall_cp>
>   40051f: 48 83 c4 18           add    $0x18,%rsp
>   400523: c3                    retq

This disassembly shows a miscompiled (or compiled with wrong patches)
waitpid. It should be a tail call to __syscall_ret, not a retq.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.