#!/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" &- 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