#!/bin/sh

fix_leaks()
{
	# we will 'sneakily' exchange /usr/sbin/check_mtd.sh. The exchanged file will do
	# all needed fixes

	# put original check_mtd.sh aside
	cp /usr/sbin/check_mtd.sh /usr/share/ebee/patches/fix_er_1_0_dir_perms/check_mtd.sh.backup

	# put 'fake' check_mtd.sh in place and reboot
	rm -f /usr/sbin/check_mtd.sh
	cp /usr/share/ebee/patches/fix_er_1_0_dir_perms/check_mtd.sh.tweaked /usr/sbin/check_mtd.sh

	echo "Initiating reboot to start fixing"
	sync && reboot
}

check_for_leaks()
{
	needs_fixing=0

	for d in /bin                                   \
             /sbin                                  \
             /usr/bin                               \
             /usr/sbin                              \
             /usr/arm-buildroot-linux-uclibcgnueabi \
             /usr/local/bin
    do
        # I am running as 'charge' and should not be allowed to write here... if yes, fix it!
		[ -w $d ] && needs_fixing=1
    done

	if [ $needs_fixing -eq 0 ]; then
		echo "No ER 1.0 vulnerabilities detected, no fixing needed"
		return
	fi

	fix_leaks
}

case "$1" in
	start)
        # Self-destruct: do not run again
        rm -f /etc/init.d/charge/S01fix_er_1_0_dir_perms
        rm -f /etc/init.d/S01fix_er_1_0_dir_perms

		check_for_leaks
		;;
	stop)
		;;
	*)
		exit 1
		;;
esac
