aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/profinet
diff options
context:
space:
mode:
authorBirol Capa <birol.capa@siemens.com>2015-11-24 16:23:33 +0200
committerAnders Broman <a.broman58@gmail.com>2015-11-25 08:28:54 +0000
commit7b1025624dd339f8ed653b7087bf5c7720b63c79 (patch)
tree49a47927e6b23752cb441e9c301fe7750138e87c /plugins/profinet
parent1c7b9492906835e81879f93fab940077aeab8dae (diff)
Profinet: All SubframeData elements are not decoded
In PDevData/PDirSubframeData/SubframeBlock, not all SubframeData elements are decoded/shown. However, all bytes of the SubframeBlock are highlighted in the binary stream correctly. Change-Id: Ic69999dff524e2e0c48a619def111c4bf9cca5e1 Reviewed-on: https://code.wireshark.org/review/12100 Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'plugins/profinet')
-rw-r--r--plugins/profinet/packet-dcerpc-pn-io.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/plugins/profinet/packet-dcerpc-pn-io.c b/plugins/profinet/packet-dcerpc-pn-io.c
index 6a50757457..74e2c6ccc7 100644
--- a/plugins/profinet/packet-dcerpc-pn-io.c
+++ b/plugins/profinet/packet-dcerpc-pn-io.c
@@ -678,6 +678,10 @@ static gint ett_pn_io_profidrive_parameter_value = -1;
static gint ett_pn_io_GroupProperties = -1;
+#define PD_SUB_FRAME_BLOCK_FIOCR_PROPERTIES_LENGTH 4
+#define PD_SUB_FRAME_BLOCK_FRAME_ID_LENGTH 2
+#define PD_SUB_FRAME_BLOCK_SUB_FRAME_DATA_LENGTH 4
+
static expert_field ei_pn_io_block_version = EI_INIT;
static expert_field ei_pn_io_block_length = EI_INIT;
static expert_field ei_pn_io_unsupported = EI_INIT;
@@ -7633,7 +7637,7 @@ dissect_PDSubFrameBlock_block(tvbuff_t *tvb, int offset,
/* FrameID */
offset = dissect_dcerpc_uint16(tvb, offset, pinfo, tree, drep, hf_pn_io_frame_id, &u16FrameID);
/* SFIOCRProperties */
- sub_item = proto_tree_add_item(tree, hf_pn_io_SFIOCRProperties, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_item = proto_tree_add_item(tree, hf_pn_io_SFIOCRProperties, tvb, offset, PD_SUB_FRAME_BLOCK_FIOCR_PROPERTIES_LENGTH, ENC_BIG_ENDIAN);
sub_tree = proto_item_add_subtree(sub_item, ett_pn_io_SFIOCRProperties);
/* dissect_dcerpc_uint32(tvb, offset, pinfo, sub_tree, drep, hf_pn_io_SFIOCRProperties, &u32SFIOCRProperties); */
@@ -7659,10 +7663,9 @@ dissect_PDSubFrameBlock_block(tvbuff_t *tvb, int offset,
/* bit 0..7 SFIOCRProperties.DistributedWatchDogFactor */
offset = /* it is the last one, so advance! */
dissect_dcerpc_uint32(tvb, offset, pinfo, sub_tree, drep, hf_pn_io_DistributedWatchDogFactor, &u32SFIOCRProperties);
-
/* SubframeData */
- u16RemainingLength = u16BodyLength - 8;
- while (u16RemainingLength >= 4)
+ u16RemainingLength = u16BodyLength - PD_SUB_FRAME_BLOCK_FIOCR_PROPERTIES_LENGTH - PD_SUB_FRAME_BLOCK_FRAME_ID_LENGTH;
+ while (u16RemainingLength >= PD_SUB_FRAME_BLOCK_SUB_FRAME_DATA_LENGTH)
{
guint8 Position,
DataLength;