Huge thanks to our Platinum Members Endace and LiveAction,
and our Silver Member Veeam, for supporting the Wireshark Foundation and project.

Wireshark-bugs: [Wireshark-bugs] [Bug 10329] New: Probably wrong length check in proto_item_set_

Date: Thu, 31 Jul 2014 11:14:56 +0000
Bug ID 10329
Summary Probably wrong length check in proto_item_set_end
Classification Unclassified
Product Wireshark
Version 1.99.x (Experimental)
Hardware x86
OS Windows 7
Status UNCONFIRMED
Severity Major
Priority Low
Component Dissection engine (libwireshark)
Assignee [email protected]
Reporter [email protected]

Created attachment 12945 [details]
Capture file containing a OPC UA message leading to the assertion

Build Information:
Version 1.99.0 (v1.99.0-rc1-1072-g54c55bb from unknown)

Copyright 1998-2014 Gerald Combs <[email protected]> and contributors.
License GPLv2+: GNU GPL version 2 or later
<http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
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 (32-bit) with GTK+ 2.24.23, with Cairo 1.10.2, with Pango 1.34.0, with
WinPcap (4_1_3), with libz 1.2.5, with GLib 2.38.0, with SMI 0.4.8, with c-ares
1.9.1, with Lua 5.2, with GnuTLS 3.1.22, with Gcrypt 1.6.0, with MIT Kerberos,
with GeoIP, with PortAudio V19-devel (built Jul 31 2014), with AirPcap.

Running on 64-bit Windows 7 Service Pack 1, build 7601, with WinPcap version
4.1.3 (packet.dll version 4.1.0.2980), based on libpcap version 1.0 branch
1_0_rel0b (20091008), with GnuTLS 3.1.22, with Gcrypt 1.6.0, without AirPcap.
        Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz (with SSE4.2), with 8132MB of
physical memory.


Built using Microsoft Visual C++ 9.0 build 21022

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

Check the man page and http://www.wireshark.org for more information.
--
Prerequisites to reproduce with attached capture file:
- Set Protocols -> OpcUa -> Ports: 48020
- Load attached capture file

When parsing OPC UA messages, for some items the opcua plugin calls
proto_item_set_end after parsing as the length of some items cannot be
determined when proto_tree_add_item is called.

The attached capture file contains a valid OPC UA Write Request which can
successfully be dissected, but at some point in the RequestHeader
proto_item_set_end throws an assertion (DISSECTOR_ASSERT(end >= fi->start);).

This assertion is only thrown if a chunked service is being dissected; we never
saw this behaviour for non-chunked services.

This leads to my assumption that the assertion inside proto_item_set_end is
wrong in case of fragmented messages that have been reassembled.


You are receiving this mail because:
  • You are watching all bug changes.