2013-04-08 20:18:21 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
test_description='Ensure that git does not access $HOME'
|
|
|
|
. ./setup.sh
|
|
|
|
|
|
|
|
test -n "$(which strace 2>/dev/null)" || {
|
|
|
|
skip_all='Skipping access validation tests: strace not found'
|
|
|
|
test_done
|
|
|
|
exit
|
|
|
|
}
|
|
|
|
|
2019-12-11 09:55:24 +00:00
|
|
|
strace true 2>/dev/null || {
|
|
|
|
skip_all='Skipping access validation tests: strace not functional'
|
|
|
|
test_done
|
|
|
|
exit
|
|
|
|
}
|
|
|
|
|
2013-04-14 16:07:41 +00:00
|
|
|
test_no_home_access () {
|
2017-10-14 19:05:51 +00:00
|
|
|
non_existent_path="/path/to/some/place/that/does/not/possibly/exist"
|
|
|
|
while test -d "$non_existent_path"; do
|
|
|
|
non_existent_path="$non_existent_path/$(date +%N)"
|
2013-04-14 16:07:41 +00:00
|
|
|
done &&
|
2013-04-08 20:18:21 +00:00
|
|
|
strace \
|
2017-10-14 19:05:51 +00:00
|
|
|
-E HOME="$non_existent_path" \
|
2013-04-08 20:18:21 +00:00
|
|
|
-E CGIT_CONFIG="$PWD/cgitrc" \
|
2013-04-14 16:07:41 +00:00
|
|
|
-E QUERY_STRING="url=$1" \
|
2013-04-10 12:11:57 +00:00
|
|
|
-e access -f -o strace.out cgit &&
|
2020-10-06 14:32:08 +00:00
|
|
|
! grep "$non_existent_path" strace.out
|
2013-04-14 16:07:41 +00:00
|
|
|
}
|
|
|
|
|
2013-05-09 18:40:58 +00:00
|
|
|
test_no_home_access_success() {
|
2013-04-14 16:07:41 +00:00
|
|
|
test_expect_success "do not access \$HOME: $1" "
|
|
|
|
test_no_home_access '$1'
|
|
|
|
"
|
|
|
|
}
|
|
|
|
|
|
|
|
test_no_home_access_success
|
|
|
|
test_no_home_access_success foo
|
|
|
|
test_no_home_access_success foo/refs
|
|
|
|
test_no_home_access_success foo/log
|
|
|
|
test_no_home_access_success foo/tree
|
|
|
|
test_no_home_access_success foo/tree/file-1
|
|
|
|
test_no_home_access_success foo/commit
|
|
|
|
test_no_home_access_success foo/diff
|
|
|
|
test_no_home_access_success foo/patch
|
2013-04-30 10:27:41 +00:00
|
|
|
test_no_home_access_success foo/snapshot/master.tar.gz
|
2013-04-08 20:18:21 +00:00
|
|
|
|
|
|
|
test_done
|