1#!/bin/sh 2# 3# Check -e fault= 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 fault=$* failed to handle an argument error properly" 41} 42 43for arg in chdir:42 \!chdir:42 \ 44 chdir:42:when=7 \ 45 chdir:invalid \ 46 chdir:invalid:when=8 \ 47 chdir:error= \ 48 chdir:error=:when=10 \ 49 chdir:error=invalid_error_name \ 50 chdir:error=invalid_error_name:when=11 \ 51 chdir:error=-1 \ 52 chdir:error=-1:when=12 \ 53 chdir:error=-2 \ 54 chdir:error=-2:when=13 \ 55 chdir:error=3+ \ 56 chdir:error=3+:when=14 \ 57 chdir:error=4096 \ 58 chdir:error=4096:when=15 \ 59 chdir:when=7:error=invalid_error_name \ 60 chdir:when= \ 61 chdir:when=:error=19 \ 62 chdir:when=0 \ 63 chdir:when=0:error=20 \ 64 chdir:when=-1 \ 65 chdir:when=-1:error=21 \ 66 chdir:when=-2+ \ 67 chdir:when=-2+:error=22 \ 68 chdir:when=-3+0 \ 69 chdir:when=-3+0:error=23 \ 70 chdir:when=4- \ 71 chdir:when=4-:error=24 \ 72 chdir:when=5+- \ 73 chdir:when=5+-:error=25 \ 74 chdir:when=6++ \ 75 chdir:when=6++:error=26 \ 76 chdir:when=7+0 \ 77 chdir:when=7+0:error=27 \ 78 chdir:when=8+-1 \ 79 chdir:when=8+-1:error=28 \ 80 chdir:when=9+1+ \ 81 chdir:when=9+1+:error=29 \ 82 chdir:when=65536 \ 83 chdir:when=65536:error=30 \ 84 chdir:when=1+65536 \ 85 chdir:when=1+65536:error=31 \ 86 chdir:retval=0 \ 87 chdir:signal=1 \ 88 chdir:error=1:error=2 \ 89 ; do 90 $STRACE -e fault="$arg" true 2> "$LOG" && 91 fail_with "$arg" 92 LC_ALL=C grep -F 'invalid fault argument' < "$LOG" > /dev/null || 93 fail_with "$arg" 94done 95 96exit 0 97