Another segv in ArgusCreateIPv4Flow?
Carter Bullard
carter at qosient.com
Tue Feb 24 10:35:38 EST 2009
Hey Jonathan,
Thanks!!!!!! When I release the new clients,
I'll push a minor update for argus() that has the patch in it.
Sorry for the inconvenience,
Carter
On Feb 24, 2009, at 10:05 AM, Jonathan Towne wrote:
> 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