On Sun, Dec 12, 1999 at 10:17:47PM -0600, James Coe wrote:
>
> I've attached the backtrace from gdb and the capture file. I also used the -m 1
> option in tcpsic to slow down the traffic rate. Ethereal was run with realtime
> packet display on and name resolution off. The system is S.u.S.E. linux 6.2 with
> kernel 2.2.10. The swap file is 128Mb and there are 32Mb of physical RAM.
>
> Jamie Coe.
>
>
> ethereal 0.7.9, with GTK+ 1.2.3, with libpcap 0.4, with libz 1.1.3, with UCD SNMP 4.0.1
> Linux gobel 2.2.10 #1 Fri Sep 10 08:11:17 CDT 1999 i586 unknown
>
> (gdb) run
> Program received signal SIGSEGV, Segmentation fault.
> 0x403301de in _IO_vfprintf (s=0xbffff288,
> format=0x80fc240 "%s (with too-short option length = %u byte%s)",
> ap=0xbffff3e4) at vfprintf.c:1248
> 1248 vfprintf.c: No such file or directory.
>
> (gdb) backtrace
> #0 0x403301de in _IO_vfprintf (s=0xbffff288,
> format=0x80fc240 "%s (with too-short option length = %u byte%s)",
> ap=0xbffff3e4) at vfprintf.c:1248
> #1 0x4033e4ac in _IO_vsnprintf (
> string=0x821e930 "Unknown (0x57) (with too-short option length = 135250469 byteort: 32455 (32455), Seq: 402611712, Ack: 3193579776", maxlen=240,
> format=0x80fc240 "%s (with too-short option length = %u byte%s)",
> args=0xbffff3d8) at vsnprintf.c:129
> #2 0x806bcd9 in proto_tree_add_item_value (tree=0x81d2300, hfindex=916,
> start=51, length=2, include_format=1, visible=1, ap=0xbffff3d4)
> at proto.c:405
> #3 0x806ba83 in proto_tree_add_text (tree=0x81d2300, start=51, length=2)
> at proto.c:277
> #4 0x80882db in dissect_ip_tcp_options (opd=0x81d7205 "", offset=51,
> length=5, opttab=0x80fc0b4, nopts=8, eol=0, opt_tree=0x81d2300)
> at packet-ip.c:651
Yup, right there. This patch will fix that error.
My current tree is in a very messed up state because of some other
work that I'm doing, but the capture file you sent appears not to
cause a segfault anymore. Can you try it with this patch?
--gilbert
Index: packet-ip.c
===================================================================
RCS file: /usr/local/cvsroot/ethereal/packet-ip.c,v
retrieving revision 1.66
diff -u -r1.66 packet-ip.c
--- packet-ip.c 1999/12/09 21:58:04 1.66
+++ packet-ip.c 1999/12/13 05:05:31
@@ -650,7 +650,7 @@
option length. */
proto_tree_add_text(opt_tree, offset, 2,
"%s (with too-short option length = %u byte%s)", name,
- plurality(len, "", "s"));
+ len, plurality(len, "", "s"));
return;
} else if (len - 2 > length) {
/* Bogus - option goes past the end of the header. */