implemented IKE/CHILD_SA termination through XML interface
[strongswan.git] / scripts / addr2strongline
1 #!/bin/bash
2 #
3 # Wrapper to addr2line.
4 #
5 # $0 gets a code line for a shared library. It checks where the
6 # library is linked to the binary and subtracts that from
7 # supplied list of addresses in the binary.
8 #
9 # This requires stack randomization to be disabled.
10
11 LIBNAME=libstrongswan
12
13 if [ ! -e $1 ];
14 then
15         echo "Error: file $1 not found"
16         exit 1
17 fi
18
19 if [ `cat /proc/sys/kernel/randomize_va_space` != 0 ];
20 then
21         echo "Error: stack randomization enabled: use echo 0 > /proc/sys/kernel/randomize_va_space"
22         exit 1
23 fi
24
25 LINK=`ldd $1 | grep $LIBNAME | awk '{print toupper($4) }' | sed -e "s/0X//g"`
26 LIB=`ldd $1 | grep $LIBNAME | awk '{print $3 }'`
27
28 until [ -z "$2" ]
29 do
30   shift
31   LEAK=`echo "$1" | sed -e "s/0x//g" | awk '{print toupper($1)}'`
32   RES=`echo "ibase=16; obase=10; $LEAK - $LINK;" | bc | sed -e "s/ //g" | awk '{print tolower($1) }'`
33   RES="0x$RES"
34   addr2line -e $LIB $RES
35 done