#!/bin/sh set -eu export LC_ALL=C.UTF-8 mkfifo /tmp/myfifo mkdir /tmp/root ln -s /real /tmp/root/link mkdir /tmp/root/real run_testA() { echo content > /tmp/foo # shellcheck disable=SC2094 { { { {{ CMD }} --hook-helper /tmp/root root setup '' 1 upload /tmp/foo "$1" < /tmp/myfifo 3>&-; echo $? >&3; printf "\\000\\000adios"; } | {{ CMD }} --hook-listener 1 3>&- >/tmp/myfifo; echo $?; } 3>&1; } | { read -r xs1; [ "$xs1" -eq 0 ]; read -r xs2; [ "$xs2" -eq 0 ]; } echo content | diff -u - /tmp/root/real/foo rm /tmp/foo rm /tmp/root/real/foo } run_testA link/foo run_testA /link/foo run_testA ///link///foo/// run_testA /././link/././foo/././ run_testA /link/../link/foo run_testA /link/../../link/foo run_testA /../../link/foo rmdir /tmp/root/real rm /tmp/root/link rmdir /tmp/root rm /tmp/myfifo