* tests/filtering_syscall-syntax.test: New file. * tests/options-syntax.test: Move syscall set syntax testing to filtering_syscall-syntax.test. * tests/qual_fault-syntax.test: Likewise. * tests/qual_inject-syntax.test: Likewise. * tests/Makefile.am (MISC_TESTS): Add filtering_syscall-syntax.test. --- tests/Makefile.am | 1 + tests/filtering_syscall-syntax.test | 95 +++++++++++++++++++++++++++++++++++++ tests/options-syntax.test | 17 ------- tests/qual_fault-syntax.test | 23 +++------ tests/qual_inject-syntax.test | 24 +++------- 5 files changed, 108 insertions(+), 52 deletions(-) create mode 100755 tests/filtering_syscall-syntax.test
diff --git a/tests/Makefile.am b/tests/Makefile.am index 42a66c46..8b25625d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -257,6 +257,7 @@ MISC_TESTS = \ detach-sleeping.test \ detach-stopped.test \ filter-unavailable.test \ + filtering_syscall-syntax.test \ fflush.test \ get_regs.test \ interactive_block.test \ diff --git a/tests/filtering_syscall-syntax.test b/tests/filtering_syscall-syntax.test new file mode 100755 index 00000000..07a62140 --- /dev/null +++ b/tests/filtering_syscall-syntax.test @@ -0,0 +1,95 @@ +#!/bin/sh +# +# Check syscall set parsing syntax. +# +# Copyright (c) 2016-2017 Dmitry V. Levin <l...@altlinux.org> +# Copyright (c) 2017 Nikolay Marchuk <marchuk.nikola...@gmail.com> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +. "${srcdir=.}/syntax.sh" + +check_syscall() +{ + [ -z "$2" ] || check_e "invalid system call '$1'" -e"$2" + check_e "invalid system call '$1'" -e "$2" + check_e "invalid system call '$1'" -etrace="$2" + check_e "invalid system call '$1'" -e trace="$2" + check_e "invalid system call '$1'" -e abbrev="$2" + check_e "invalid system call '$1'" -e verbose="$2" + check_e "invalid system call '$1'" -e raw="$2" + check_e "invalid system call '$1'" -e inject="$2" + check_e "invalid system call '$1'" -e inject="$2:when=3" + check_e "invalid system call '$1'" -e fault="$2" + check_e "invalid system call '$1'" -e fault="$2:when=4" +} + +for arg in '' , ,, ,,, ; do + check_syscall "$arg" "$arg" + check_syscall "!$arg" "!$arg" +done + +for arg in -1 -2 -3 -4 -5 \ + invalid_syscall_name \ + 0x 0y \ + 32767 \ + 2147483647 \ + 2147483648 \ + 4294967295 \ + 4294967296 \ + /non_syscall \ + % %not_a_class \ + ; do + check_syscall "$arg" "$arg" + check_syscall "$arg" "!$arg" +done + +# invalid syscall, multiple syscalls +for arg in %desc \ + %file \ + %memory \ + %process \ + %network \ + chdir \ + 1 \ + ?32767 \ + ?invalid \ + ?%not_a_class \ + ?/non_syscall \ + ; do + check_syscall nonsense "$arg,nonsense" + check_syscall nonsense "!$arg,nonsense" + check_syscall nonsense "nonsense,$arg" + check_syscall nonsense "!nonsense,$arg" +done + +for arg in \! \!open none all -1; do + check_syscall "$arg" "1,$arg" +done + +check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id' +check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id' +check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id' +check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id' +check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id' diff --git a/tests/options-syntax.test b/tests/options-syntax.test index b4d9be70..47f6b66e 100755 --- a/tests/options-syntax.test +++ b/tests/options-syntax.test @@ -37,17 +37,6 @@ check_e "Invalid process id: 'a'" -p 1,a check_e "Syscall 'chdir' for -b isn't supported" -b chdir check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir -check_e "invalid system call '-1'" -e-1 -check_e "invalid system call '-2'" -e -2 -check_e "invalid system call '-3'" -etrace=-3 -check_e "invalid system call '-4'" -e trace=-4 -check_e "invalid system call '-5'" -e trace=1,-5 -check_e "invalid system call '/non_syscall'" -e trace=/non_syscall -check_e "invalid system call '2147483647'" -e 2147483647 -check_e "invalid system call '2147483648'" -e 2147483648 -check_e "invalid system call '4294967295'" -e 4294967295 -check_e "invalid system call '4294967296'" -e 4294967296 - check_e "invalid descriptor '-1'" -eread=-1 check_e "invalid descriptor '-42'" -ewrite=-42 check_e "invalid descriptor '2147483648'" -eread=2147483648 @@ -59,12 +48,6 @@ check_e "invalid descriptor '!'" -ewrite='!' check_e "invalid descriptor '!'" -eread='0,!' check_e "invalid descriptor '!,'" -ewrite='!,' -check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id' -check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id' -check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id' -check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id' -check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id' - check_h 'must have PROG [ARGS] or -p PID' check_h 'PROG [ARGS] must be specified with -D' -D -p $$ check_h '-c and -C are mutually exclusive' -c -C true diff --git a/tests/qual_fault-syntax.test b/tests/qual_fault-syntax.test index 0cce539a..1a545b6e 100755 --- a/tests/qual_fault-syntax.test +++ b/tests/qual_fault-syntax.test @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -. "${srcdir=.}/init.sh" +. "${srcdir=.}/syntax.sh" # # F @@ -40,16 +40,11 @@ fail_with() "strace -e fault=$* failed to handle an argument error properly" } -for arg in '' , ,, ,,, : :: ::: \! \!, \!: \ - invalid_syscall_name \ - invalid_syscall_name:when=3 \ - -1 \!-1 \ - -1:when=4 \ - -2 \ - -2:when=5 \ - 32767 \!32767 \ - 32767:when=6 \ - chdir:42 \!chdir:42 \ +for arg in : :: ::: ; do + check_e "invalid system call ''" -e fault="$arg" +done + +for arg in chdir:42 \!chdir:42 \ chdir:42:when=7 \ chdir:invalid \ chdir:invalid:when=8 \ @@ -92,12 +87,6 @@ for arg in '' , ,, ,,, : :: ::: \! \!, \!: \ chdir:when=65536:error=30 \ chdir:when=1+65536 \ chdir:when=1+65536:error=31 \ - file,nonsense \ - \!desc,nonsense \ - chdir,nonsense \ - \!chdir,nonsense \ - 1,nonsense \ - \!1,nonsense \ chdir:retval=0 \ chdir:signal=1 \ chdir:error=1:error=2 \ diff --git a/tests/qual_inject-syntax.test b/tests/qual_inject-syntax.test index a9e44d74..3866bdcf 100755 --- a/tests/qual_inject-syntax.test +++ b/tests/qual_inject-syntax.test @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -. "${srcdir=.}/init.sh" +. "${srcdir=.}/syntax.sh" # # F @@ -40,17 +40,11 @@ fail_with() "strace -e inject=$* failed to handle an argument error properly" } -for arg in '' , ,, ,,, : :: ::: \! \!, \!: \ - invalid_syscall_name \ - invalid_syscall_name:when=3 \ - -1 \!-1 \ - -1:when=4 \ - -2 \ - -2:when=5 \ - 32767 \!32767 \ - 32767:when=6 \ - 42 \ - chdir \ +for arg in : :: ::: ; do + check_e "invalid system call ''" -e inject="$arg" +done + +for arg in 42 chdir \ chdir:42 \!chdir:42 \ chdir:42:when=7 \ chdir:invalid \ @@ -94,12 +88,6 @@ for arg in '' , ,, ,,, : :: ::: \! \!, \!: \ chdir:when=65536:error=30 \ chdir:when=1+65536 \ chdir:when=1+65536:error=31 \ - file,nonsense \ - \!desc,nonsense \ - chdir,nonsense \ - \!chdir,nonsense \ - 1,nonsense \ - \!1,nonsense \ chdir:retval=-1 \ chdir:signal=0 \ chdir:signal=129 \ -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel