1#!/bin/sh -efu 2 3# Check decoding of return values injected into a syscall that "never fails". 4 5. "${srcdir=.}/scno_tampering.sh" 6 7case "$STRACE_ARCH" in 8alpha) 9 SYSCALL=getpgrp 10 ;; 11*) 12 SYSCALL=getpid 13 ;; 14esac 15 16run_prog 17prog="$args" 18fault_args="-a9 -e trace=${SYSCALL} -e inject=${SYSCALL}:retval=" 19 20test_rval() 21{ 22 local rval 23 rval="$1"; shift 24 25 run_strace $fault_args$rval $prog $rval > "$EXP" 26 match_diff "$LOG" "$EXP" 27} 28 29test_rval 0 30test_rval 1 31test_rval 0x7fffffff 32test_rval 0x80000000 33test_rval 0xfffff000 34test_rval 0xfffffffe 35test_rval 0xffffffff 36 37case "$SIZEOF_KERNEL_LONG_T" in 388) 39 test_rval 0x80000000 40 test_rval 0xfffff000 41 test_rval 0xfffffffe 42 test_rval 0xffffffff 43 test_rval 0x100000000 44 test_rval 0x7fffffffffffffff 45 test_rval 0x8000000000000000 46 test_rval 0xfffffffffffff000 47 test_rval 0xfffffffffffffffe 48 test_rval 0xffffffffffffffff 49 ;; 50esac 51