File CVE-2011-0461.diff of Package aaa_base
--- etc/init.d/boot.localfs.orig 2011-03-15 15:54:57.000000000 +0100
+++ etc/init.d/boot.localfs 2011-03-15 15:57:57.000000000 +0100
@@ -58,7 +58,7 @@
if type -p tac > /dev/null 2>&1 ; then
reverse ()
{
- TMPDIR=/dev/shm tac
+ tac
}
else
reverse ()
@@ -252,7 +252,13 @@
stop)
mounts=/etc/fstab
test -r /proc/mounts && mounts=/proc/mounts
- reverse < $mounts > /dev/shm/mtab
+ if TMPDIR=$(/bin/mktemp -d /dev/shm/.XXXXXX 2>/dev/null) ; then
+ export TMPDIR
+ reverse < $mounts > ${TMPDIR}/mtab
+ rvtab=${TMPDIR}/mtab
+ else
+ rvtab=$mounts
+ fi
mtab=
test "$2" = "nomtab" && mtab=-n
@@ -267,7 +273,7 @@
*[Ii][Nn][Tt][Ee][Rr][Mm][Ee][Zz][Zz][Oo]*)
umountizo >/dev/null 2>&1
esac
- done < /dev/shm/mtab
+ done < ${rvtab}
fi
ulist=
@@ -301,7 +307,7 @@
case ",$mntfs," in
*,$type,*) umount $mtab -t $type $fs ;;
esac
- done < /dev/shm/mtab
+ done < ${rvtab}
grep "loop" /proc/partitions | while read major minor blocks name ; do
case "$name" in
@@ -327,8 +333,6 @@
if test "$UMOUNT_FAILED" = true -a -z "$mtab" ; then
echo "Oops: umount failed :-( -- trying to remount readonly..."
- mounts=/etc/fstab
- test -r /proc/mounts && mounts=/proc/mounts
# Use cat and a pipe because umount changes
# /proc/mounts during direct read call
cat $mounts | \