diff options
author | Goldman, Adam <adam.goldman@intel.com> | 2017-09-15 15:35:01 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2019-02-01 05:47:17 +0000 |
commit | 21565b9bc4e4bc9f5f1b17bbb1593e4bbaf119a2 (patch) | |
tree | 62bba6f527702dd27076b976519cdea0ee86ca50 /epan | |
parent | ce6b5dba47d296b6e97482c9e734341a0897e0ac (diff) |
opa-mad: Fixed when ClassDataDetails is zero length
Change-Id: Ia64089516bd83e1441b55c23f88c967e396ee70d
Signed-off-by: Goldman, Adam <adam.goldman@intel.com>
(cherry picked from commit 9e95627f71cbdaf3a29cca24f7219d05d5d8f4c2)
Reviewed-on: https://code.wireshark.org/review/31774
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-opa-mad.c | 14 |
1 files changed, 10 insertions, 4 deletions
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; } |