TESTROOT = ../..
include ${TESTROOT}/include/common.makefile
run: all
./main || echo "FAIL rpath-indirect-suid absolute path"
${TESTROOT}/bin/exit-non-zero-pass.pl "rpath-indirect-suid @loader_path path" "rpath-indirect-suid @loader_path path" ./main_bad1
${TESTROOT}/bin/exit-non-zero-pass.pl "rpath-indirect-suid relative path" "rpath-indirect-suid relative path" ./main_bad2
${TESTROOT}/bin/exit-non-zero-pass.pl "rpath-indirect-suid @rpath spoof" "rpath-indirect-suid @rpath spoof" ./main_bad3
all: main main_bad1 main_bad2 main_bad3
hide/hole/libbar.dylib : bar.c
mkdir -p hide/hole
${CC} bar.c -dynamiclib -o hide/hole/libbar.dylib -install_name @rpath/libbar.dylib
libfoo.dylib : foo.c hide/hole/libbar.dylib
${CC} foo.c -dynamiclib -o "`pwd`/libfoo.dylib" hide/hole/libbar.dylib
main : main.c libfoo.dylib
${CC} -I${TESTROOT}/include main.c -o main libfoo.dylib -Wl,-rpath -Wl,`pwd`/hide/hole
sudo chown root main
sudo chmod 4755 main
main_bad1 : main.c libfoo.dylib
${CC} -I${TESTROOT}/include main.c -DDEFAULT_FAIL -o main_bad1 libfoo.dylib -Wl,-rpath -Wl,@loader_path/hide/hole
sudo chown root main_bad1
sudo chmod 4755 main_bad1
main_bad2 : main.c libfoo.dylib
${CC} -I${TESTROOT}/include main.c -DDEFAULT_FAIL -o main_bad2 libfoo.dylib -Wl,-rpath -Wl,hide/hole
sudo chown root main_bad2
sudo chmod 4755 main_bad2
main_bad3 : main.c libfoo.dylib
${CC} -I${TESTROOT}/include main.c -DDEFAULT_FAIL -o main_bad3 libfoo.dylib
ln -s hide/hole @rpath
sudo chown root main_bad3
sudo chmod 4755 main_bad3
clean:
${RM} ${RMFLAGS} *~ main main_bad1 main_bad2 main_bad3 hide libfoo.dylib @rpath