Ethereal-users: Re: [Ethereal-users] Problems with WSP and 0.9.5

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <gharris@xxxxxxxxx>
Date: Tue, 30 Jul 2002 00:38:20 -0700
On Mon, Jul 29, 2002 at 11:01:53AM +0100, Pedro Carvalho wrote:
> Hello, I recently upgraded from 0.9.1 to 0.9.5 and a previous capture
> file now hangs 0.9.5. 
>  
> I attached the file.

It doesn't hang when I try it.

It crashes.

I've attached a patch that fixes the crash, if you can build Ethereal
from source; if not, I've checked the fix in, so the next release should
have it.

> Sorry but i do not know hot to "bug report" this....

You report a bug by mailing to "ethereal-dev@xxxxxxxxxxxx", giving
details and, if possible, a capture file. :-)
Index: packet-wsp.c
===================================================================
RCS file: /usr/local/cvsroot/ethereal/packet-wsp.c,v
retrieving revision 1.58
diff -c -r1.58 packet-wsp.c
*** packet-wsp.c	17 Jul 2002 00:42:42 -0000	1.58
--- packet-wsp.c	30 Jul 2002 07:34:19 -0000
***************
*** 205,210 ****
--- 205,211 ----
  static gint ett_redirect_afl				= ETT_EMPTY;
  static gint ett_multiparts				= ETT_EMPTY;
  static gint ett_mpartlist				= ETT_EMPTY;
+ static gint ett_post_data				= ETT_EMPTY;
  
  /* Handle for WSP-over-UDP dissector */
  static dissector_handle_t wsp_fromudp_handle;
***************
*** 3804,3812 ****
--- 3805,3815 ----
  	guint valueEnd = 0;
  	guint8 peek = 0;
  	proto_item *ti;
+ 	proto_tree *subtree;
  	
  	/* VERIFY ti = proto_tree_add_item (tree, hf_wsp_post_data,tvb,offset,-1,bo_little_endian); */
  	ti = proto_tree_add_item (tree, hf_wsp_post_data,tvb,offset,-1,bo_little_endian);
+ 	subtree = proto_item_add_subtree(ti, ett_post_data);
  
  	if (contentTypeStr == NULL && contentType == 0x12)
  	{
***************
*** 3826,3832 ****
  			{
  				if (variableEnd > 0)
  				{
! 					add_post_variable (ti, tvb, variableStart, variableEnd, valueStart, offset);
  				}
  				variableStart = offset+1;
  				variableEnd = 0;
--- 3829,3835 ----
  			{
  				if (variableEnd > 0)
  				{
! 					add_post_variable (subtree, tvb, variableStart, variableEnd, valueStart, offset);
  				}
  				variableStart = offset+1;
  				variableEnd = 0;
***************
*** 3838,3850 ****
  		/* See if there's outstanding data */
  		if (variableEnd > 0)
  		{
! 			add_post_variable (ti, tvb, variableStart, variableEnd, valueStart, offset);
  		}
  	}
  	else if ((contentType == 0x22) || (contentType == 0x23) || (contentType == 0x23) || (contentType == 0x24) ||
  		 (contentType == 0x25) || (contentType == 0x26) || (contentType == 0x33))
  	{
! 		add_multipart_data(ti, tvb);
  	}
  }
  
--- 3841,3853 ----
  		/* See if there's outstanding data */
  		if (variableEnd > 0)
  		{
! 			add_post_variable (subtree, tvb, variableStart, variableEnd, valueStart, offset);
  		}
  	}
  	else if ((contentType == 0x22) || (contentType == 0x23) || (contentType == 0x23) || (contentType == 0x24) ||
  		 (contentType == 0x25) || (contentType == 0x26) || (contentType == 0x33))
  	{
! 		add_multipart_data(subtree, tvb);
  	}
  }
  
***************
*** 4894,4900 ****
  		&ett_redirect_flags,
  		&ett_redirect_afl,
  		&ett_multiparts,
! 		&ett_mpartlist
  	};
  
  /* Register the protocol name and description */
--- 4897,4904 ----
  		&ett_redirect_flags,
  		&ett_redirect_afl,
  		&ett_multiparts,
! 		&ett_mpartlist,
! 		&ett_post_data
  	};
  
  /* Register the protocol name and description */