]> granicus.if.org Git - strace/commit
Fix decoding of invalid syscalls mapped to indirect subcalls
authorDmitry V. Levin <ldv@altlinux.org>
Tue, 9 Aug 2016 00:07:53 +0000 (00:07 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Tue, 9 Aug 2016 01:13:24 +0000 (01:13 +0000)
commit60d7ec80d940815482873cfe3f280a4eb16e1864
tree37074a39d3a4d15dfffe77e006fdae697388922b
parentc61dd7f4d2724b629065a739a6944e1fee052a3f
Fix decoding of invalid syscalls mapped to indirect subcalls

When the syscall number returned by arch_get_scno is a mapped indirect
subcall (i.e. mapped subcall of socketcall or ipc syscall), do not
mistakenly treat it as a valid indirect subcall.

* defs.h (SCNO_IS_VALID): Treat scno with TRACE_INDIRECT_SUBCALL flag
as invalid.
* syscall.c (syscall_name): Do no shuffle scno.
(trace_syscall_entering, trace_syscall_exiting): Use
tcp->s_ent->sys_name instead of syscall_name.
(get_scno): In case of invalid syscall, allocate a dynamic struct sysent
containing an appropriate .sys_name.
* tests/nsyscalls.c (main) [SYS_socket_subcall]: Check decoding
of direct syscall number SYS_socket_subcall+1.
(main) [SYS_ipc_subcall]: Check decoding of direct syscall number
SYS_ipc_subcall+1.
defs.h
syscall.c
tests/nsyscalls.c