thanks. i have checked in a fix for this problem.
On Sat, 28 Aug 2004 22:00:17 +1000, Andrew Hood <ajhood@xxxxxxxxx> wrote:
> ethereal 0.10.6 (SVN 20040827090146)
> Compiled with GTK+ 2.3.0, with GLib 2.3.5, with libpcap 0.8.3, with libz
> 1.1.4,
> with libpcre 4.4, with Net-SNMP 5.1, with ADNS.
> Running with libpcap version 0.8.3 on Linux 2.4.21.
>
> I got this crash from both ethereal and tethereal. The attached pcap is
> enough to trigger it. It does not happen with 0.10.5 (SVN
> 20040723183607) and the same versions of glib, gtk, libpcap, libz and ADNS.
>
> ==============
> GLib-CRITICAL **: file gmem.c: line 746 (g_mem_chunk_alloc): assertion
> `mem_chunk != NULL' failed
>
> This partial trace is from "tethereal -r segv.pcap"
>
> (process:18968): GLib-CRITICAL **: file gmem.c: line 746
> (g_mem_chunk_alloc): assertion `mem_chunk != NULL' failed
>
> Program received signal SIGSEGV, Segmentation fault.
> get_tcp_conversation_data (pinfo=0x81e6ef0) at packet-tcp.c:293
> 293 tcpd->ual1=NULL;
> (gdb) bt
> #0 get_tcp_conversation_data (pinfo=0x81e6ef0) at packet-tcp.c:293
> #1 0x404ab70a in verify_tcp_window_scaling (pinfo=0x81e6ef0) at
> packet-tcp.c:502
>
> Rest of backtrace seems irrelevent due to analysis below.
> ==============
>
> It looks like get_tcp_conversation_data tries to use tcp_analysis_chunk
> but tcp_analyze_seq_init did not initialise it because tcp_analyze_seq
> was zero. The default value of tcp.analyze_sequence_numbers appears to
> be FALSE which explains that.
>
> So is the correct answer to check tcp_analyze_seq before calling
> verify_tcp_window_scaling? That certainly fixes the crash.
>
> Index: epan/dissectors/packet-tcp.c
> ===================================================================
> --- epan/dissectors/packet-tcp.c (revision 11842)
> +++ epan/dissectors/packet-tcp.c (working copy)
> @@ -2893,7 +2893,8 @@
> * then we should just forget about the windowscaling completely.
> */
> if(!pinfo->fd->flags.visited){
> - if((tcph->th_flags & (TH_SYN|TH_ACK))==(TH_SYN|TH_ACK)) {
> + if(tcp_analyze_seq &&
> + ((tcph->th_flags & (TH_SYN|TH_ACK))==(TH_SYN|TH_ACK))) {
> verify_tcp_window_scaling(pinfo);
> }
> }
>
> --
> There's no point in being grown up if you can't be childish sometimes.
> -- Dr. Who
>
>
> _______________________________________________
> Ethereal-dev mailing list
> Ethereal-dev@xxxxxxxxxxxx
> http://www.ethereal.com/mailman/listinfo/ethereal-dev
>
>
>
>