1#!/bin/sh 2# 3# Check -e inject= syntax. 4# 5# Copyright (c) 2016-2017 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 '' , ,, ,,, : :: ::: \! \!, \!: \ 44 invalid_syscall_name \ 45 invalid_syscall_name:when=3 \ 46 -1 \!-1 \ 47 -1:when=4 \ 48 -2 \ 49 -2:when=5 \ 50 32767 \!32767 \ 51 32767:when=6 \ 52 42 \ 53 chdir \ 54 chdir:42 \!chdir:42 \ 55 chdir:42:when=7 \ 56 chdir:invalid \ 57 chdir:invalid:when=8 \ 58 chdir:error= \ 59 chdir:error=:when=10 \ 60 chdir:error=invalid_error_name \ 61 chdir:error=invalid_error_name:when=11 \ 62 chdir:error=-1 \ 63 chdir:error=-1:when=12 \ 64 chdir:error=-2 \ 65 chdir:error=-2:when=13 \ 66 chdir:error=3+ \ 67 chdir:error=3+:when=14 \ 68 chdir:error=4096 \ 69 chdir:error=4096:when=15 \ 70 chdir:when=7:error=invalid_error_name \ 71 chdir:when= \ 72 chdir:when=:error=19 \ 73 chdir:when=0 \ 74 chdir:when=0:error=20 \ 75 chdir:when=-1 \ 76 chdir:when=-1:error=21 \ 77 chdir:when=-2+ \ 78 chdir:when=-2+:error=22 \ 79 chdir:when=-3+0 \ 80 chdir:when=-3+0:error=23 \ 81 chdir:when=4- \ 82 chdir:when=4-:error=24 \ 83 chdir:when=5+- \ 84 chdir:when=5+-:error=25 \ 85 chdir:when=6++ \ 86 chdir:when=6++:error=26 \ 87 chdir:when=7+0 \ 88 chdir:when=7+0:error=27 \ 89 chdir:when=8+-1 \ 90 chdir:when=8+-1:error=28 \ 91 chdir:when=9+1+ \ 92 chdir:when=9+1+:error=29 \ 93 chdir:when=65536 \ 94 chdir:when=65536:error=30 \ 95 chdir:when=1+65536 \ 96 chdir:when=1+65536:error=31 \ 97 file,nonsense \ 98 \!desc,nonsense \ 99 chdir,nonsense \ 100 \!chdir,nonsense \ 101 1,nonsense \ 102 \!1,nonsense \ 103 chdir:retval=-1 \ 104 chdir:signal=0 \ 105 chdir:signal=129 \ 106 chdir:retval=0:retval=1 \ 107 chdir:error=1:error=2 \ 108 chdir:retval=0:error=1 \ 109 chdir:error=1:retval=0 \ 110 chdir:retval=0:signal=1:error=1 \ 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