Wireshark-bugs: [Wireshark-bugs] [Bug 1934] New: GIOP 1.1 Fragments incorrectly dissected

Date: Tue, 23 Oct 2007 08:46:08 +0000 (GMT)
http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1934

           Summary: GIOP 1.1 Fragments incorrectly dissected
           Product: Wireshark
           Version: 0.99.5
          Platform: All
        OS/Version: NetBSD
            Status: NEW
          Severity: Normal
          Priority: Low
         Component: Wireshark
        AssignedTo: wireshark-bugs@xxxxxxxxxxxxx
        ReportedBy: steve@xxxxxxxxxxxxx


Build Information:
wireshark 0.99.5

Copyright 1998-2007 Gerald Combs <gerald@xxxxxxxxxxxxx> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled with GTK+ 2.10.13, with GLib 2.12.12, with libpcap 0.8.3, with libz
1.1.4, with libpcre 7.1, with Net-SNMP 5.4, without ADNS, without Lua, with
GnuTLS 1.6.3, with Gcrypt 1.2.4, without Kerberos, without PortAudio, without
AirPcap.

Running on NetBSD 3.1, with libpcap version 0.8.3.

Built using gcc 3.3.3 (NetBSD nb3 20040520).

--
The GIOP Fragment message type was added as of GIOP 1.1. However the Fragment
message header (containing a request id) was only added as of GIOP 1.2. The
GIOP Fragment dissector incorrectly attempts to process the request id for a
version 1.1 request.

To fix add a version check to the dissect_giop_fragment function in
packet-giop.c:

static void 
dissect_giop_fragment( tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree,
                MessageHeader * header, gboolean stream_is_big_endian)
{
  guint32 offset = 0;
  proto_tree *fragment_tree = NULL;
  proto_item *tf;

  if (tree)
    {
      tf = proto_tree_add_text (tree, tvb, offset, -1,
                                "General Inter-ORB Fragment");
      if (fragment_tree == NULL)
        {
          fragment_tree = proto_item_add_subtree (tf, ett_giop_fragment);

        }
    }

  if (header->GIOP_version.minor > 1) 
  {     
    guint32 request_id;

    request_id = get_CDR_ulong(tvb, &offset,
stream_is_big_endian,GIOP_HEADER_SI
ZE);
    if (check_col(pinfo->cinfo, COL_INFO))
    {
      col_append_fstr(pinfo->cinfo, COL_INFO, " %u", request_id);
    }   
    if (fragment_tree )
    {   
      proto_tree_add_uint (fragment_tree, hf_giop_req_id, tvb, offset-4,
4,reque
st_id);
    }
  } 
} 

Note: This function now takes an additional MessageHeader argument.


-- 
Configure bugmail: http://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.