From 21565b9bc4e4bc9f5f1b17bbb1593e4bbaf119a2 Mon Sep 17 00:00:00 2001 From: "Goldman, Adam" Date: Fri, 15 Sep 2017 15:35:01 -0400 Subject: opa-mad: Fixed when ClassDataDetails is zero length Change-Id: Ia64089516bd83e1441b55c23f88c967e396ee70d Signed-off-by: Goldman, Adam (cherry picked from commit 9e95627f71cbdaf3a29cca24f7219d05d5d8f4c2) Reviewed-on: https://code.wireshark.org/review/31774 Petri-Dish: Anders Broman Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- epan/dissectors/packet-opa-mad.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'epan') diff --git a/epan/dissectors/packet-opa-mad.c b/epan/dissectors/packet-opa-mad.c index f753b110e2..d6d5e33324 100644 --- a/epan/dissectors/packet-opa-mad.c +++ b/epan/dissectors/packet-opa-mad.c @@ -3119,7 +3119,7 @@ static gint parse_NoticesAndTraps(proto_tree *parentTree, tvbuff_t *tvb, gint *o if (!parentTree) return *offset; - NoticesAndTraps_header_item = proto_tree_add_item(parentTree, hf_opa_Notice, tvb, local_offset, 64, ENC_NA); + NoticesAndTraps_header_item = proto_tree_add_item(parentTree, hf_opa_Notice, tvb, local_offset, 96, ENC_NA); proto_item_set_text(NoticesAndTraps_header_item, "%s", val_to_str(trapNumber, Trap_Description, "Unknown or Vendor Specific Trap Number! (0x%02x)")); NoticesAndTraps_header_tree = proto_item_add_subtree(NoticesAndTraps_header_item, ett_noticestraps); @@ -3147,9 +3147,15 @@ static gint parse_NoticesAndTraps(proto_tree *parentTree, tvbuff_t *tvb, gint *o proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_IssuerGID, tvb, local_offset, 16, ENC_NA); local_offset += 16; - parse_NoticeDataDetails(NoticesAndTraps_header_tree, tvb, &local_offset, trapNumber); - local_offset += 64; - proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_ClassDataDetails, tvb, local_offset, -1, ENC_NA); + if (isGeneric) { + parse_NoticeDataDetails(NoticesAndTraps_header_tree, tvb, &local_offset, trapNumber); + local_offset += 64; + if (tvb_bytes_exist(tvb, local_offset, 8)) { + proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_ClassDataDetails, tvb, local_offset, -1, ENC_NA); + } + } else { + local_offset += 64; + } return local_offset; } -- cgit v1.2.3