Fix insecure library loading (Debian Bug #598309, CVE-2010-3386) (v2)
[ust.git] / usttrace
index b28a8d018609e4a80bec867afac0e34c6d81a7f7..5fdb52f3e88e7fdabb2d6e55bd0c537b706841fe 100755 (executable)
--- a/usttrace
+++ b/usttrace
@@ -27,8 +27,8 @@ USTTRACE_DIR="$(dirname $0)"
 if [ -x "${USTTRACE_DIR}/ustd/ustd" ] ; then
     # Use the not installed libraries instead
     USTD="${USTTRACE_DIR}/ustd/ustd"
-    LIBINTERFORK_PATH="${USTTRACE_DIR}/libinterfork/.libs/libinterfork.so"
-    LIBMALLOCWRAP_PATH="${USTTRACE_DIR}/libmallocwrap/.libs/libmallocwrap.so"
+    LIBINTERFORK_PATH="${USTTRACE_DIR}/libustfork/.libs/libustfork.so"
+    LIBMALLOCWRAP_PATH="${USTTRACE_DIR}/libustinstr-malloc/.libs/libustinstr-malloc.so"
     LIBUST_PATH="${USTTRACE_DIR}/libust/.libs/libust.so"
 else
     # Use the libraries that the dynamic link finds
@@ -37,8 +37,8 @@ else
         error "cannot find an executable ustd; make sure its location is in the PATH"
         exit 1
     fi
-    LIBINTERFORK_PATH="libinterfork.so"
-    LIBMALLOCWRAP_PATH="libmallocwrap.so"
+    LIBINTERFORK_PATH="libustfork.so"
+    LIBMALLOCWRAP_PATH="libustinstr-malloc.so"
     LIBUST_PATH="libust.so.0"
 fi
 
@@ -54,9 +54,11 @@ function usage () {
        echo "    -m    Instrument malloc calls." 2>/dev/stderr
        echo "    -f    Also trace forked processes." 2>/dev/stderr
        echo "    -s    Use system-wide daemon instead of creating one for this session." 2>/dev/stderr
+       echo "    -S    Specify the subbuffer size." 2>/dev/stderr
+       echo "    -N    Specify the number of subbuffers." 2>/dev/stderr
 }
 
-while getopts ":hlLmfsW" options; do
+while getopts ":hlLmfsWS:N:" options; do
        case $options in
                l) arg_preload_libust=1;;
                L) arg_ld_std_ust=1;;
@@ -64,6 +66,8 @@ while getopts ":hlLmfsW" options; do
                f) arg_preload_fork=1;;
                s) arg_syswide_daemon=1;;
                W) where=1;;
+               S) export UST_SUBBUF_SIZE=$OPTARG;;
+               N) export UST_SUBBUF_NUM=$OPTARG;;
                h) usage;
                   exit 0;;
                \?) usage
@@ -128,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
This page took 0.023793 seconds and 4 git commands to generate.