From 9c7acde7125b23fa8c74bd9f6f98a7e940e5c5c8 Mon Sep 17 00:00:00 2001 From: Gerhard Gappmeier Date: Thu, 25 Jun 2015 14:53:14 +0200 Subject: opcua dissector: Fix parsing of 7 byte numeric service NodeIds. The service NodeIds of OPC UA are normally encoded as 4 byte numeric NodeId. However, it is technically also possible to encode these as (less efficient) 7 byte numeric NodeId. This kind of NodeId was already implemented, but wrong. Since then no one ever used this kind of NodeId for service NodeIds. Change-Id: I8654d969604e18bce8415931e455632e72d578ef Reviewed-on: https://code.wireshark.org/review/9435 Reviewed-by: Anders Broman --- plugins/opcua/opcua_application_layer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/opcua/opcua_application_layer.c b/plugins/opcua/opcua_application_layer.c index 82e8647aac..7d15c75c4a 100644 --- a/plugins/opcua/opcua_application_layer.c +++ b/plugins/opcua/opcua_application_layer.c @@ -85,8 +85,8 @@ int parseServiceNodeId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) iOffset+=2; break; case 0x02: /* numeric, that does not fit into four bytes */ - proto_tree_add_item(tree, hf_opcua_app_nsid, tvb, iOffset, 4, ENC_LITTLE_ENDIAN); - iOffset+=4; + proto_tree_add_item(tree, hf_opcua_app_nsid, tvb, iOffset, 2, ENC_LITTLE_ENDIAN); + iOffset+=2; Numeric = tvb_get_letohl(tvb, iOffset); proto_tree_add_item(tree, hf_opcua_app_numeric, tvb, iOffset, 4, ENC_LITTLE_ENDIAN); iOffset+=4; -- cgit v1.2.1