From: Dmitry V. Levin Date: Fri, 1 Mar 2013 15:50:22 +0000 (+0000) Subject: Fix trace=set regression introduced by commit v4.7-111-g9cbc15b X-Git-Tag: v4.8~112 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7b9e45e89151c80c5569ad32b4174893258adcec;p=strace Fix trace=set regression introduced by commit v4.7-111-g9cbc15b * syscall.c (qual_syscall, qualify): Pass personality down to qualify_one. * tests/qual_syscall: New test. * tests/Makefile.am (TESTS): Add qual_syscall. --- diff --git a/syscall.c b/syscall.c index 1f8bde1d..3566a013 100644 --- a/syscall.c +++ b/syscall.c @@ -462,7 +462,7 @@ qual_syscall(const char *s, int bitflag, int not) if (sysent_vec[p][i].sys_name && strcmp(s, sysent_vec[p][i].sys_name) == 0 ) { - qualify_one(i, bitflag, not, 0); + qualify_one(i, bitflag, not, p); rc = 0; } } @@ -575,7 +575,7 @@ qualify(const char *s) for (pers = 0; pers < SUPPORTED_PERSONALITIES; pers++) { for (i = 0; i < nsyscall_vec[pers]; i++) if (sysent_vec[pers][i].sys_flags & n) - qualify_one(i, opt->bitflag, not, 0); + qualify_one(i, opt->bitflag, not, pers); } continue; } diff --git a/tests/Makefile.am b/tests/Makefile.am index 93636ca8..b7776b78 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,6 +1,6 @@ # Automake input for strace tests. -TESTS = ptrace_setoptions strace-f +TESTS = ptrace_setoptions strace-f qual_syscall EXTRA_DIST = init.sh $(TESTS) diff --git a/tests/qual_syscall b/tests/qual_syscall new file mode 100755 index 00000000..a0ac0296 --- /dev/null +++ b/tests/qual_syscall @@ -0,0 +1,29 @@ +#!/bin/sh + +# Ensure that strace -e trace=set works. + +. "${srcdir=.}/init.sh" + +check_strace +check_prog timeout +check_prog ls +check_prog grep + +timeout -s 9 $check_timeout \ +$STRACE -e execve ls > /dev/null 2> check.log && +grep '^execve(' check.log > /dev/null || + { cat check.log; fail_ 'strace -e execve does not work'; } + +grep -v '^execve(' check.log | +LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null && + { cat check.log; fail_ 'strace -e execve does not work properly'; } + +timeout -s 9 $check_timeout \ +$STRACE -e trace=process ls > /dev/null 2> check.log && +grep '^execve(' check.log > /dev/null || + { cat check.log; fail_ 'strace -e trace=process does not work'; } + +grep '^open' check.log > /dev/null && + { cat check.log; fail_ 'strace -e trace=process does not work properly'; } + +exit 0