diff options
author | Philippe Ombredanne <pombredanne@nexb.com> | 2014-02-01 09:57:45 -0800 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2014-02-02 16:51:22 +0000 |
commit | 894c7e3858ede412e37a1752c716bed7f30a9605 (patch) | |
tree | efaffb302587e9db4c8f524cb1f990c416e30dfd /tests | |
parent | 123d401508a17403c9cafaa79a4bd771bce37c7e (diff) | |
download | strace-894c7e3858ede412e37a1752c716bed7f30a9605.tar.gz |
Add decoding of sockets descriptor 'paths' for network calls
* net.c (sys_bind, sys_listen, do_accept, sys_send, sys_sendto,
sys_sendmsg, sys_sendmmsg, sys_recv, sys_recvfrom, sys_recvmsg,
sys_recvmmsg, sys_shutdown, sys_getsockopt, sys_setsockopt): Decode
socket descriptor arguments using printfd.
* pathtrace.c (pathtrace_match): Also check TRACE_NETWORK syscalls
that take socket descriptor arguments.
* tests/net-fd.test: New test for socket descriptor arguments decoding.
* tests/Makefile.am (TESTS): Add net-fd.test.
(net-fd.log): New dependency on net.log.
Signed-off-by: Philippe Ombredanne <pombredanne@nexb.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 3 | ||||
-rwxr-xr-x | tests/net-fd.test | 47 |
2 files changed, 50 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 56c4a0671..82226df32 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -11,10 +11,13 @@ TESTS = \ sigaction.test \ stat.test \ net.test \ + net-fd.test \ detach-sleeping.test \ detach-stopped.test \ detach-running.test +net-fd.log: net.log + TEST_LOG_COMPILER = $(srcdir)/run.sh EXTRA_DIST = init.sh run.sh sigaction.awk $(TESTS) diff --git a/tests/net-fd.test b/tests/net-fd.test new file mode 100755 index 000000000..0f6b4e2cc --- /dev/null +++ b/tests/net-fd.test @@ -0,0 +1,47 @@ +#!/bin/sh + +# Check how network syscalls are traced when decoding socket descriptors + +. "${srcdir=.}/init.sh" + +# strace -y is implemented using /proc/self/fd +[ -d /proc/self/fd/ ] || + framework_skip_ '/proc/self/fd/ is not available' + +check_prog grep +check_prog rm + +rm -f $LOG.* + +./net-accept-connect || + fail_ 'net-accept-connect failed' + +# using -y to test socket descriptors 'paths' decoding +args="-tt -ff -y -o $LOG -enetwork ./net-accept-connect" +$STRACE $args || + fail_ "strace $args failed" + +"$srcdir"/../strace-log-merge $LOG > $LOG || { + cat $LOG + fail_ 'strace-log-merge failed' +} + +rm -f $LOG.* + +grep_log() +{ + local syscall="$1"; shift + local prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +' + + LC_ALL=C grep -E -x "$prefix$syscall$@" $LOG > /dev/null || { + cat $LOG + fail_ "strace -enetwork failed to trace \"$syscall\" properly" + } +} +grep_log bind '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0' +grep_log listen '\(0<socket:\[[0-9]+\]>, 5\) += 0' +grep_log getsockname '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0' +grep_log accept '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1' +grep_log connect '\(1<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0' + +exit 0 |