Wireshark-bugs: [Wireshark-bugs] [Bug 3648] New: decode error for network-id in BICC BCU-ID

Date: Thu, 2 Jul 2009 19:38:44 -0700 (PDT)
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3648

           Summary: decode error for network-id in BICC BCU-ID
           Product: Wireshark
           Version: 1.0.0
          Platform: x86
        OS/Version: Windows XP
            Status: NEW
          Severity: Major
          Priority: High
         Component: Wireshark
        AssignedTo: wireshark-bugs@xxxxxxxxxxxxx
        ReportedBy: lei.n.wang@xxxxxxxxxxxxxxxxxxxx
                CC: lei.n.wang@xxxxxxxxxxxxxxxxxxxx


Build Information:
Version 1.0.0

Copyright 1998-2008 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.12.8, with GLib 2.14.6, with WinPcap (version unknown),
with libz 1.2.3, without POSIX capabilities, with libpcre 7.0, with SMI 0.4.5,
with ADNS, with Lua 5.1, with GnuTLS 1.6.1, with Gcrypt 1.2.3, with MIT
Kerberos, with PortAudio V19-devel, with AirPcap.

Running on Windows XP Service Pack 2, build 2600, with WinPcap version 4.0.2
(packet.dll version 4.0.0.1040), based on libpcap version 0.9.5, without
AirPcap.

Built using Microsoft Visual C++ 6.0 build 8804

Wireshark is Open Source Software released under the GNU General Public
License.

Check the man page and http://www.wireshark.org for more information.
--

Protocol: BICC
Error type: decode BCU-ID error
Detail:
When wireshark decode network ID in "Bearer control unit identifier", it always
skip one byte. I think it is a bug. 
You can reproduce it by decoding IAM with network-id in BCU identifier.



Code is following:
**********************************************************
file:epan/dissectors/Packet-isup.c
line: 3366 ~ 3406
error line: 3371

                        case BEARER_CONTROL_UNIT_IDENTIFIER :
                                tempdata = tvb_get_guint8(parameter_tvb,
offset);
                                proto_tree_add_text(bat_ase_element_tree,
parameter_tvb, offset, 1, "Network ID Length indicator= %u",tempdata);
                                offset = offset +1;
                                if ( tempdata > 0 ) {
                                        offset = offset +1;

/* Q.765.5 amd 1
        Network ID
        The coding of the Network ID field is identical to the coding of the
Network ID field in the
        Global Call Reference parameter as specified in clause 6/Q.1902.3 (see
[3]).
        NOTE .When used inside a network domain, the Network ID may be omitted
by setting the
        Network ID Length indicator to the value "0".
        Q.1902.3
        The following codes are used in the subfields of the global call
reference parameter field:
        a) Network ID
        The Network ID contains the value field (coded according to ASN.1 BER)
of an object
        identifier identifying the network. This means that the tag and length
fields are omitted.
        An example of such an object identifier can be the following:
        .{itu-t (0) administration (2) national regulatory authority (x)
network (y)}
        The value for x is the value of the national regulatory authority (one
of the Data Country
        Codes associated to the country as specified in ITU-T X.121 shall be
used for "national
        regulatory authority"), the value for y is under the control of the
national regulatory
        authority concerned.
        b) Node ID
        A binary number that uniquely identifies within the network the node
which generates the
        call reference.
        c) Call Reference ID
        A binary number used for the call reference of the call. This is
generated by the node for
        each call.

*/
                                       
proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset, tempdata ,
"Network ID: %s",
                                                           
tvb_bytes_to_str(parameter_tvb, offset, tempdata));
                                        offset = offset + tempdata;
                                } /* end if */

                                Local_BCU_ID = tvb_get_letohl(parameter_tvb,
offset);
                               
proto_tree_add_uint_format(bat_ase_element_tree, hf_Local_BCU_ID ,
parameter_tvb, offset, 4, Local_BCU_ID , "Local BCU ID : 0x%08x", Local_BCU_ID
);
                                offset = offset + 4;
                        break;


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