1*9c5db199SXin Li#!/bin/env bash 2*9c5db199SXin Li# 3*9c5db199SXin Li# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 4*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 5*9c5db199SXin Li# found in the LICENSE file. 6*9c5db199SXin Li 7*9c5db199SXin LiFAKE_SYSCALLS_LIB=`pwd`/libfakesyscalls.so 8*9c5db199SXin LiFAKE_SYSCALLS_DBG=/tmp/fake_syscalls.dbg 9*9c5db199SXin LiTEST_EXE=`pwd`/fakesyscalls-exercise 10*9c5db199SXin Li 11*9c5db199SXin Li# build up the redirection envrionment variable 12*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=: 13*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo1=/tmp/foo2 14*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo3 15*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo4=. 16*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo5=/tmp/foo6 17*9c5db199SXin Liexport FILE_REDIRECTIONS_PRELOAD=$FILE_REDIRECTIONS_PRELOAD 18*9c5db199SXin Li 19*9c5db199SXin Lirm -f /tmp/foo1 /tmp/foo2 /tmp/foo3 /tmp/foo4 /tmp/foo5 /tmp/foo6 /tmp/foo99 20*9c5db199SXin Lirm -f ${FAKE_SYSCALLS_DBG} 21*9c5db199SXin Li 22*9c5db199SXin Li# Successful redirection 23*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo1 /tmp/foo2 24*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo1 /tmp/foo2 25*9c5db199SXin Liecho 26*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG} 27*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG} 28*9c5db199SXin Liecho 29*9c5db199SXin Li 30*9c5db199SXin Li# Malformed map --> unsuccessful redirection 31*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo3 /tmp/foo3 32*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo3 /tmp/foo3 33*9c5db199SXin Liecho 34*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG} 35*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG} 36*9c5db199SXin Liecho 37*9c5db199SXin Li 38*9c5db199SXin Li# Relative path in map --> unsuccessful redirection 39*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo4 /tmp/foo4 40*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo4 /tmp/foo4 41*9c5db199SXin Liecho 42*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG} 43*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG} 44*9c5db199SXin Liecho 45*9c5db199SXin Li 46*9c5db199SXin Li# Does not exist in map --> no redirection. 47*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo99 /tmp/foo99 48*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo99 /tmp/foo99 49*9c5db199SXin Liecho 50*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG} 51*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG} 52*9c5db199SXin Liecho 53*9c5db199SXin Li 54*9c5db199SXin Li 55*9c5db199SXin Lipushd . >/dev/null 56*9c5db199SXin Licd /tmp >/dev/null 57*9c5db199SXin Li# Relative path in open() --> unsuccessful redirection 58*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} foo5 foo5 59*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} foo5 foo5 60*9c5db199SXin Liif test -e /tmp/foo6 61*9c5db199SXin Lithen 62*9c5db199SXin Li echo Fail: /tmp/foo6 should not have been created. foo6: 63*9c5db199SXin Li cat /tmp/foo6 64*9c5db199SXin Lifi 65*9c5db199SXin Liecho 66*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG} 67*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG} 68*9c5db199SXin Liecho 69*9c5db199SXin Lipopd >/dev/null 70