diff options
author | Martin Willi <martin@strongswan.org> | 2007-10-11 13:40:52 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2007-10-11 13:40:52 +0000 |
commit | 04685885f5c5e283fe7a69a67484abe6dc72fde5 (patch) | |
tree | 7e462d47568f7b89fc5d7a7fc98eba678b99d962 /scripts/addr2strongline | |
parent | 86150b684d38bebda2b763ea077a1dc83d4fa27d (diff) | |
download | strongswan-04685885f5c5e283fe7a69a67484abe6dc72fde5.tar.bz2 strongswan-04685885f5c5e283fe7a69a67484abe6dc72fde5.tar.xz |
added addr2strongline script which helps to resolve leaking symbols in libstrongswan
Diffstat (limited to 'scripts/addr2strongline')
-rwxr-xr-x | scripts/addr2strongline | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/scripts/addr2strongline b/scripts/addr2strongline new file mode 100755 index 000000000..695ddd42a --- /dev/null +++ b/scripts/addr2strongline @@ -0,0 +1,35 @@ +#!/bin/bash +# +# Wrapper to addr2line. +# +# $0 gets a code line for a shared library. It checks where the +# library is linked to the binary and subtracts that from +# supplied list of addresses in the binary. +# +# This requires stack randomization to be disabled. + +LIBNAME=libstrongswan + +if [ ! -e $1 ]; +then + echo "Error: file $1 not found" + exit 1 +fi + +if [ `cat /proc/sys/kernel/randomize_va_space` != 0 ]; +then + echo "Error: stack randomization enabled: use echo 0 > /proc/sys/kernel/randomize_va_space" + exit 1 +fi + +LINK=`ldd $1 | grep $LIBNAME | awk '{print toupper($4) }' | sed -e "s/0X//g"` +LIB=`ldd $1 | grep $LIBNAME | awk '{print $3 }'` + +until [ -z "$2" ] +do + shift + LEAK=`echo "$1" | sed -e "s/0x//g" | awk '{print toupper($1)}'` + RES=`echo "ibase=16; obase=10; $LEAK - $LINK;" | bc | sed -e "s/ //g" | awk '{print tolower($1) }'` + RES="0x$RES" + addr2line -e $LIB $RES +done |