1 #!/bin/sh 2 # 3 # Check -e inject= syntax. 4 # 5 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv (at] altlinux.org> 6 # All rights reserved. 7 # 8 # Redistribution and use in source and binary forms, with or without 9 # modification, are permitted provided that the following conditions 10 # are met: 11 # 1. Redistributions of source code must retain the above copyright 12 # notice, this list of conditions and the following disclaimer. 13 # 2. Redistributions in binary form must reproduce the above copyright 14 # notice, this list of conditions and the following disclaimer in the 15 # documentation and/or other materials provided with the distribution. 16 # 3. The name of the author may not be used to endorse or promote products 17 # derived from this software without specific prior written permission. 18 # 19 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 30 . "${srcdir=.}/init.sh" 31 32 # 33 # F 34 # F+ 35 # F+S 36 37 fail_with() 38 { 39 dump_log_and_fail_with \ 40 "strace -e inject=$* failed to handle an argument error properly" 41 } 42 43 for arg in 42 chdir \ 44 chdir:42 \!chdir:42 \ 45 chdir:42:when=7 \ 46 chdir:invalid \ 47 chdir:invalid:when=8 \ 48 chdir:error= \ 49 chdir:error=:when=10 \ 50 chdir:error=invalid_error_name \ 51 chdir:error=invalid_error_name:when=11 \ 52 chdir:error=-1 \ 53 chdir:error=-1:when=12 \ 54 chdir:error=-2 \ 55 chdir:error=-2:when=13 \ 56 chdir:error=3+ \ 57 chdir:error=3+:when=14 \ 58 chdir:error=4096 \ 59 chdir:error=4096:when=15 \ 60 chdir:when=7:error=invalid_error_name \ 61 chdir:when= \ 62 chdir:when=:error=19 \ 63 chdir:when=0 \ 64 chdir:when=0:error=20 \ 65 chdir:when=-1 \ 66 chdir:when=-1:error=21 \ 67 chdir:when=-2+ \ 68 chdir:when=-2+:error=22 \ 69 chdir:when=-3+0 \ 70 chdir:when=-3+0:error=23 \ 71 chdir:when=4- \ 72 chdir:when=4-:error=24 \ 73 chdir:when=5+- \ 74 chdir:when=5+-:error=25 \ 75 chdir:when=6++ \ 76 chdir:when=6++:error=26 \ 77 chdir:when=7+0 \ 78 chdir:when=7+0:error=27 \ 79 chdir:when=8+-1 \ 80 chdir:when=8+-1:error=28 \ 81 chdir:when=9+1+ \ 82 chdir:when=9+1+:error=29 \ 83 chdir:when=65536 \ 84 chdir:when=65536:error=30 \ 85 chdir:when=1+65536 \ 86 chdir:when=1+65536:error=31 \ 87 chdir:retval=-1 \ 88 chdir:signal=0 \ 89 chdir:signal=129 \ 90 chdir:signal=1:signal=2 \ 91 chdir:signal=1:retval=0:signal=2 \ 92 chdir:retval=0:retval=1 \ 93 chdir:error=1:error=2 \ 94 chdir:retval=0:error=1 \ 95 chdir:error=1:retval=0 \ 96 chdir:retval=0:signal=1:error=1 \ 97 ; do 98 $STRACE -e inject="$arg" true 2> "$LOG" && 99 fail_with "$arg" 100 LC_ALL=C grep -F 'invalid inject argument' < "$LOG" > /dev/null || 101 fail_with "$arg" 102 done 103 104 exit 0 105