From mboxrd@z Thu Jan 1 00:00:00 1970 From: mathieu.desnoyers@efficios.com (Mathieu Desnoyers) Date: Thu, 30 Sep 2010 10:49:05 -0400 Subject: [ltt-dev] [PATCH UST] Fix insecure library loading (Debian Bug #598309, CVE-2010-3386) (v2) In-Reply-To: References: <20100929132755.GA20790@starquasia> <20100929150622.GA6625@Krystal> Message-ID: <20100930144905.GA32435@Krystal> Thanks to Raphael Geissert for spotting this, and to Jon Bernard for forwarding the information to us. Changelog since v1: Apply comments from Nils. Signed-off-by: Mathieu Desnoyers Reviewed-by: Nils Carlson CC: Raphael Geissert CC: Jon Bernard --- usttrace | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) Index: ust/usttrace =================================================================== --- ust.orig/usttrace +++ ust/usttrace @@ -132,27 +132,54 @@ fi if [ "$arg_preload_libust" = "1" ]; then - if [ -n "${LIBUST_PATH%libust.so}" ] ; then - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + if [ -n "${LIBUST_PATH%libust.so}" ]; + then + if [ -n "$LD_LIBRARY_PATH" ]; + then + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + else + export LD_LIBRARY_PATH="${LIBUST_PATH%libust.so}" + fi + fi + if [ -n "$LIBUST_PATH" ]; + then + if [ -n "$LD_PRELOAD" ]; + then + export LD_PRELOAD="$LD_PRELOAD:$LIBUST_PATH" + else + export LD_PRELOAD="$LIBUST_PATH" + fi fi - export LD_PRELOAD="$LD_PRELOAD:$LIBUST_PATH" fi - if [ "$arg_ld_std_ust" = "1" ]; + if [ "$arg_ld_std_ust" = "1" ] && [ -n "${LIBUST_PATH%libust.so}" ]; then - if [ -n "$${LIBUST_PATH%libust.so}" ] ; then - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + if [ -n "$LD_LIBRARY_PATH" ]; + then + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}" + else + export LD_LIBRARY_PATH="${LIBUST_PATH%libust.so}" fi fi - if [ "$arg_preload_malloc" = "1" ]; + if [ "$arg_preload_malloc" = "1" ] && [ -n "$LIBMALLOCWRAP_PATH" ]; then - export LD_PRELOAD="$LD_PRELOAD:$LIBMALLOCWRAP_PATH" + if [ -n "$LD_PRELOAD" ]; + then + export LD_PRELOAD="$LD_PRELOAD:$LIBMALLOCWRAP_PATH" + else + export LD_PRELOAD="$LIBMALLOCWRAP_PATH" + fi fi - if [ "$arg_preload_fork" = "1" ]; + if [ "$arg_preload_fork" = "1" ] && [ -n "$LIBINTERFORK_PATH" ]; then - export LD_PRELOAD="$LD_PRELOAD:$LIBINTERFORK_PATH" + if [ -n "$LD_PRELOAD" ]; + then + export LD_PRELOAD="$LD_PRELOAD:$LIBINTERFORK_PATH" + else + export LD_PRELOAD="$LIBINTERFORK_PATH" + fi fi # Execute the command -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com