tar: add a test that we don't write into symlinks
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
accd9eeb71
commit
a960748748
@ -256,6 +256,49 @@ Ok
|
|||||||
"" ""
|
"" ""
|
||||||
SKIP=
|
SKIP=
|
||||||
|
|
||||||
|
# attack.tar.bz2 has symlink pointing to a system file
|
||||||
|
# followed by a regular file with the same name
|
||||||
|
# containing "root::0:0::/root:/bin/sh":
|
||||||
|
# lrwxrwxrwx root/root passwd -> /tmp/passwd
|
||||||
|
# -rw-r--r-- root/root passwd
|
||||||
|
# naive tar implementation may end up creating the symlink
|
||||||
|
# and then writing into it.
|
||||||
|
# The correct implementation unlinks target before
|
||||||
|
# creating the second file.
|
||||||
|
# We test that /tmp/passwd remains empty:
|
||||||
|
optional UUDECODE FEATURE_SEAMLESS_BZ2
|
||||||
|
testing "tar does not extract into symlinks" "\
|
||||||
|
>>/tmp/passwd && uudecode -o input && tar xf input 2>&1 && rm passwd; cat /tmp/passwd; echo \$?
|
||||||
|
" "\
|
||||||
|
0
|
||||||
|
" \
|
||||||
|
"" "\
|
||||||
|
begin-base64 644 attack.tar.bz2
|
||||||
|
QlpoOTFBWSZTWRVn/bIAAKt7hMqwAEBAAP2QAhB0Y96AAACACCAAlISgpqe0
|
||||||
|
po0DIaDynqAkpDRP1ANAhiYNSPR8VchKhAz0AK59+DA6FcMKBggOARIJdVHL
|
||||||
|
DGllrjs20ATUgR1HmccBX3EhoMnpMJaNyggmxgLDMz54lBnBTJO/1L1lbMS4
|
||||||
|
l4/V8LDoe90yiWJhOJvIypgEfxdyRThQkBVn/bI=
|
||||||
|
====
|
||||||
|
"
|
||||||
|
SKIP=
|
||||||
|
# And same with -k
|
||||||
|
optional UUDECODE FEATURE_SEAMLESS_BZ2
|
||||||
|
testing "tar -k does not extract into symlinks" "\
|
||||||
|
>>/tmp/passwd && uudecode -o input && tar xf input -k 2>&1 && rm passwd; cat /tmp/passwd; echo \$?
|
||||||
|
" "\
|
||||||
|
tar: can't open 'passwd': File exists
|
||||||
|
0
|
||||||
|
" \
|
||||||
|
"" "\
|
||||||
|
begin-base64 644 attack.tar.bz2
|
||||||
|
QlpoOTFBWSZTWRVn/bIAAKt7hMqwAEBAAP2QAhB0Y96AAACACCAAlISgpqe0
|
||||||
|
po0DIaDynqAkpDRP1ANAhiYNSPR8VchKhAz0AK59+DA6FcMKBggOARIJdVHL
|
||||||
|
DGllrjs20ATUgR1HmccBX3EhoMnpMJaNyggmxgLDMz54lBnBTJO/1L1lbMS4
|
||||||
|
l4/V8LDoe90yiWJhOJvIypgEfxdyRThQkBVn/bI=
|
||||||
|
====
|
||||||
|
"
|
||||||
|
SKIP=
|
||||||
|
|
||||||
|
|
||||||
cd .. && rm -rf tar.tempdir || exit 1
|
cd .. && rm -rf tar.tempdir || exit 1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user