[ltt-dev] [PATCH UST] Fix insecure library loading (Debian Bug #598309, CVE-2010-3386) (v2)

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Thu Sep 30 10:49:05 EDT 2010


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 <mathieu.desnoyers at efficios.com>
Reviewed-by: Nils Carlson <nils.carlson at ericsson.com>
CC: Raphael Geissert <geissert at debian.org>
CC: Jon Bernard <jbernard at debian.org>
---
 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




More information about the lttng-dev mailing list