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