aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorGoldman, Adam <adam.goldman@intel.com>2017-09-15 15:35:01 -0400
committerAnders Broman <a.broman58@gmail.com>2019-02-01 05:47:17 +0000
commit21565b9bc4e4bc9f5f1b17bbb1593e4bbaf119a2 (patch)
tree62bba6f527702dd27076b976519cdea0ee86ca50 /epan
parentce6b5dba47d296b6e97482c9e734341a0897e0ac (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.c14
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;
}