]> granicus.if.org Git - strace/commitdiff
Fix trace=set regression introduced by commit v4.7-111-g9cbc15b
authorDmitry V. Levin <ldv@altlinux.org>
Fri, 1 Mar 2013 15:50:22 +0000 (15:50 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 1 Mar 2013 16:22:02 +0000 (16:22 +0000)
* syscall.c (qual_syscall, qualify): Pass personality down to
qualify_one.
* tests/qual_syscall: New test.
* tests/Makefile.am (TESTS): Add qual_syscall.

syscall.c
tests/Makefile.am
tests/qual_syscall [new file with mode: 0755]

index 1f8bde1d683ad1e02a20c8433b85686056823811..3566a013f01a85d1bfde8e50886b93e790129be2 100644 (file)
--- 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;
                }
index 93636ca8fb857a8f12e4f30957252e1146763261..b7776b78f3c3a87d4c130fcddafa1a8f71d90ec1 100644 (file)
@@ -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 (executable)
index 0000000..a0ac029
--- /dev/null
@@ -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