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 | \
openSUSE Build Service is sponsored by