1#!/bin/sh 2# 3# Check -e inject= syntax. 4# 5# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@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 37fail_with() 38{ 39 dump_log_and_fail_with \ 40 "strace -e inject=$* failed to handle an argument error properly" 41} 42 43for 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=a \ 88 chdir:retval=0b \ 89 chdir:retval=0x10000000000000000 \ 90 chdir:signal=0 \ 91 chdir:signal=129 \ 92 chdir:signal=1:signal=2 \ 93 chdir:signal=1:retval=0:signal=2 \ 94 chdir:retval=0:retval=1 \ 95 chdir:error=1:error=2 \ 96 chdir:retval=0:error=1 \ 97 chdir:error=1:retval=0 \ 98 chdir:retval=0:signal=1:error=1 \ 99 chdir:delay_enter=-1 \ 100 chdir:delay_exit=-2 \ 101 chdir:delay_enter=1:delay_enter=2 \ 102 chdir:delay_exit=3:delay_exit=4 \ 103 chdir:delay_enter=5:delay_exit=6:delay_enter=7 \ 104 chdir:delay_exit=8:delay_enter=9:delay_exit=10 \ 105 chdir:syscall=invalid \ 106 chdir:syscall=chdir \ 107 chdir:syscall=%file \ 108 chdir:syscall=-42 \ 109 chdir:syscall=42 \ 110 chdir:syscall=gettid:syscall=gettid \ 111 ; do 112 $STRACE -e inject="$arg" true 2> "$LOG" && 113 fail_with "$arg" 114 LC_ALL=C grep -F 'invalid inject argument' < "$LOG" > /dev/null || 115 fail_with "$arg" 116done 117 118exit 0 119