Another segv in ArgusCreateIPv4Flow?
David
lists at edeca.net
Fri Jul 18 06:23:21 EDT 2008
I have just read the earlier thread with a segfault in
ArgusCreateIPv4Flow(). I have modified the code section mentioned
there but I still get the same results.
I'm no expert with gdb but I managed to compile and grab a backtrace.
I edited argus/Makefile and replaced the optimisation with -ggdb, is
there a better way to enable debug?
Below is the backtrace. In order to share the capture files I'd have
to sanitise out data. I am happy to debug and play with the source as
necessary though.
david at fish ~/tmp/argus/argus-3.0.0 $ gdb bin/argus
GNU gdb 6.7.1
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run -r /home/david/tmp/test.pcap
Starting program: /home/david/tmp/argus/argus-3.0.0/bin/argus -r
/home/david/tmp/test.pcap
Program received signal SIGSEGV, Segmentation fault.
0x08055b29 in ArgusCreateIPv4Flow (model=0x8134008, ip=0x0) at
ArgusModeler.c:3632
3632 unsigned char *nxtHdr = (unsigned char *)((char *)ip +
(ip->ip_hl << 2));
(gdb) bt full
#0 0x08055b29 in ArgusCreateIPv4Flow (model=0x8134008, ip=0x0) at
ArgusModeler.c:3632
retn = (void *) 0x8134418
nxtHdr = (unsigned char *) 0x10000000 <Address 0x10000000 out
of bounds>
sport = 47097
dport = 4096
proto = 0 '\0'
tp_p = 0 '\0'
len = 0
hlen = 0
ArgusOptionLen = 0
#1 0x08050634 in ArgusCreateFlow (model=0x8134008, ptr=0x813494c,
length=78) at ArgusModeler.c:1555
retn = (void *) 0x8134418
ep = (struct ether_header *) 0x813494c
keys = 1
index = 1
i = 0
#2 0x0804fccc in ArgusProcessIpPacket (model=0x8134008, ip=0x813494c,
length=78, tvp=0xbfe4927c) at ArgusModeler.c:1361
retn = 0
pass = 1
flow = (struct ArgusFlowStruct *) 0x1
nflow = (struct ArgusFlowStruct *) 0xbb
tflow = (struct ArgusSystemFlow *) 0x0
#3 0x08059992 in ArgusIpPacket (user=0xb7d64008 "", h=0xbfe492ec,
p=0x813494c "E") at ArgusSource.c:1403
src = (struct ArgusSourceStruct *) 0xb7d64008
tvpbuf = {tv_sec = 1211532660, tv_usec = 393789}
tvp = (struct timeval *) 0xbfe4927c
ip = (struct ip *) 0x813494c
length = 78
caplen = 78
statbuf = {st_dev = 13257796500955894428, __pad1 = 1,
__st_ino = 0, st_mode = 3085275911, st_nlink = 135481676, st_uid =
3086700584, st_gid = 78, st_rdev = 339259832066,
__pad2 = 18764, st_size = 338093555700, st_blksize = 78, st_blocks
= -5195550500855704984, st_atim = {tv_sec = 135480824, tv_nsec =
135481676}, st_mtim = {tv_sec = 78,
tv_nsec = -1075539304}, st_ctim = {tv_sec = -1209733708, tv_nsec
= 135480824}, st_ino = 335142930764}
#4 0xb7f816ee in pcap_offline_read () from /usr/lib/libpcap.so.0
No symbol table info available.
#5 0xb7fd2650 in _r_debug ()
No symbol table info available.
#6 0x00000001 in ?? ()
No symbol table info available.
#7 0xbfe492f0 in ?? ()
No symbol table info available.
#8 0xb7fc46e9 in _dl_fixup () from /lib/ld-linux.so.2
No symbol table info available.
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)
Regards,
David
More information about the argus
mailing list