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