I just thought of this issue the other day--here is a very small patch that should avoid confusion about the fact that the ISUP dissector only does ITU (for the moment).
Michael Lum wrote:
Yes, thanks.
OK, to summarize:
1. the snoop trace has M2UA from an older draft, the data 1 parameter is 0x000e 2. the ISUP is ANSI and thus has no trailing 0x00 indicating "no optional parameters"
The end result (aside from me causing confusion) is that the ANSI RLC will show up as [Malformed Packet: ISUP].
My patch prevents the malformed by not consuming the extra octet.
But thanks to Jeff I now know that the patch is NOT correct.
It is an ANSI/ITU problem, for the ANSI RLC no optional parameters are allowed and therefore the fix would have to occur further up in the function where the "opt_part_possible" boolean was set.
Thanks, sorry for the mess. I will make it up.
-----Original Message----- From: Jeff Morriss [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 20, 2003 6:44 AM To: Guy Harris Cc: Michael Lum; [EMAIL PROTECTED] Subject: Re: [Ethereal-dev] ISUP patch
Guy Harris wrote:
On Fri, Aug 15, 2003 at 11:31:37AM -0700, Michael Lum wrote:
I believe the ISUP dissector has a bug when decoding the optional parameter pointer.
So what is the added check doing? It looks as if it's checking whether the optional parameter pointer is present in the packet.
It depends. I think I read that this was an ANSI RLC. The ISUP dissector as it stands now was written for ITU ISUP. (It appears to "mostly work" for ANSI, though.)
In ITU ISUP, the RLC message can have optional parameters (and thus a pointer to optional).
In ANSI ISUP, the RLC message does not have any optional parameters (and thus no pointer to optional).
(Porting the ISUP dissector to also do ANSI ISUP has been on my hit-list for a very long time...)
Index: packet-isup.c
===================================================================
RCS file: /cvsroot/ethereal/packet-isup.c,v
retrieving revision 1.33
diff -u -r1.33 packet-isup.c
--- packet-isup.c 10 Oct 2003 10:04:19 -0000 1.33
+++ packet-isup.c 14 Oct 2003 14:44:32 -0000
@@ -5392,7 +5392,7 @@
/* Make entries in Protocol column and Info column on summary display */
if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP (ITU)");
/* Extract message type field */
message_type = tvb_get_guint8(tvb, CIC_OFFSET + CIC_LENGTH);
