Another segv in ArgusCreateIPv4Flow?
Jonathan Towne
jontow at hijacked.us
Tue Feb 24 10:05:48 EST 2009
Carter,
For what its worth; I had to use this patch on an OpenBSD 4.4/amd64 machine
when monitoring a gif(4) interface for a VPN.. Otherwise, identical crash.
(Using 3.0.0 from the FTP as of last night)
-- Jonathan Towne
On Fri, Jul 18, 2008 at 11:15:28AM -0400, Carter Bullard scribbled:
# Hey David,
# Lots of questions to ask, like the machine, architecture (seems like
# its 64-bit), what kind of interface are you capturing from, and what
# kind of
# packets are you expecting? Normally we'd all need that kind of info,
# but.....
#
# From your gdb dump, I think I see the problem.
#
# Looks to me that ArgusProcessIpPacket() is getting good data, but its
# not updating the ArgusThisIpHdr field in ArgusModel, as this value
# is empty.
#
# Because your line numbers are so pretty far off from my source tree,
# make this change and tell me if it worked for you.
#
# Modify this line in ArgusProcessIpPacket() (+26 lines from the start)
#
# model->ArgusThisUpHdr = (unsigned char *)ip;
#
# to
# model->ArgusThisIpHdr = (unsigned char *)ip;
#
# and lets see if that makes a difference!!! If so, I'll add it to the
# argus-3.0.1.beta.1 distibution code.
#
# And thanks for sending mail!!!!
#
# Carter
#
# On Jul 18, 2008, at 6:23 AM, David wrote:
#
# >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