| #!/bin/env bash |
| # |
| # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| FAKE_SYSCALLS_LIB=`pwd`/libfakesyscalls.so |
| FAKE_SYSCALLS_DBG=/tmp/fake_syscalls.dbg |
| TEST_EXE=`pwd`/fakesyscalls-exercise |
| |
| # build up the redirection envrionment variable |
| FILE_REDIRECTIONS_PRELOAD=: |
| FILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo1=/tmp/foo2 |
| FILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo3 |
| FILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo4=. |
| FILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo5=/tmp/foo6 |
| export FILE_REDIRECTIONS_PRELOAD=$FILE_REDIRECTIONS_PRELOAD |
| |
| rm -f /tmp/foo1 /tmp/foo2 /tmp/foo3 /tmp/foo4 /tmp/foo5 /tmp/foo6 /tmp/foo99 |
| rm -f ${FAKE_SYSCALLS_DBG} |
| |
| # Successful redirection |
| echo LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo1 /tmp/foo2 |
| LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo1 /tmp/foo2 |
| echo |
| echo ${FAKE_SYSCALLS_DBG} |
| cat ${FAKE_SYSCALLS_DBG} |
| echo |
| |
| # Malformed map --> unsuccessful redirection |
| echo LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo3 /tmp/foo3 |
| LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo3 /tmp/foo3 |
| echo |
| echo ${FAKE_SYSCALLS_DBG} |
| cat ${FAKE_SYSCALLS_DBG} |
| echo |
| |
| # Relative path in map --> unsuccessful redirection |
| echo LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo4 /tmp/foo4 |
| LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo4 /tmp/foo4 |
| echo |
| echo ${FAKE_SYSCALLS_DBG} |
| cat ${FAKE_SYSCALLS_DBG} |
| echo |
| |
| # Does not exist in map --> no redirection. |
| echo LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo99 /tmp/foo99 |
| LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo99 /tmp/foo99 |
| echo |
| echo ${FAKE_SYSCALLS_DBG} |
| cat ${FAKE_SYSCALLS_DBG} |
| echo |
| |
| |
| pushd . >/dev/null |
| cd /tmp >/dev/null |
| # Relative path in open() --> unsuccessful redirection |
| echo LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} foo5 foo5 |
| LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} foo5 foo5 |
| if test -e /tmp/foo6 |
| then |
| echo Fail: /tmp/foo6 should not have been created. foo6: |
| cat /tmp/foo6 |
| fi |
| echo |
| echo ${FAKE_SYSCALLS_DBG} |
| cat ${FAKE_SYSCALLS_DBG} |
| echo |
| popd >/dev/null |