diff options
author | Evan Huus <eapache@gmail.com> | 2013-07-07 16:18:18 +0000 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2013-07-07 16:18:18 +0000 |
commit | cd7712fd2f3064945ce001e1d82109852c3b3191 (patch) | |
tree | e40b0f24093256ad4f0244a63ace7596fe3dc7b8 /epan/dissectors | |
parent | ebf30a7a5d6aa7ba34b9c323e7fd3520b43692e9 (diff) |
A bit more of https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8828
svn path=/trunk/; revision=50432
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-dcom-sysact.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/epan/dissectors/packet-dcom-sysact.c b/epan/dissectors/packet-dcom-sysact.c index 7e156dc5aa..2f963b8d3e 100644 --- a/epan/dissectors/packet-dcom-sysact.c +++ b/epan/dissectors/packet-dcom-sysact.c @@ -252,9 +252,13 @@ dissect_dcom_Property_Guid(tvbuff_t *tvb, gint offset, packet_info *pinfo, di = (dcerpc_info *)pinfo->private_data; pg = (property_guids_t*)di->private_data; - DISSECTOR_ASSERT(pg->id_idx < MAX_ACTPROP_LIMIT); - offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, drep, - hf_sysact_actpropclsid, &pg->guid[pg->id_idx++]); + if (pg->id_idx < MAX_ACTPROP_LIMIT) { + offset = dissect_dcom_UUID(tvb, offset, pinfo, tree, drep, + hf_sysact_actpropclsid, &pg->guid[pg->id_idx++]); + } + else { + /* TODO: expert info */ + } return offset; } @@ -277,9 +281,13 @@ dissect_dcom_Property_Size(tvbuff_t *tvb, gint offset, packet_info *pinfo, di = (dcerpc_info *)pinfo->private_data; pg = (property_guids_t*)di->private_data; - DISSECTOR_ASSERT(pg->size_idx < MAX_ACTPROP_LIMIT); - offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep, - hf_sysact_actpropsize, &pg->size[pg->size_idx++]); + if (pg->size_idx < MAX_ACTPROP_LIMIT) { + offset = dissect_dcom_DWORD(tvb, offset, pinfo, tree, drep, + hf_sysact_actpropsize, &pg->size[pg->size_idx++]); + } + else { + /* TODO: expert info */ + } return offset; } @@ -369,17 +377,24 @@ dissect_dcom_ActivationPropertiesBody(tvbuff_t *tvb, gint offset, packet_info *p dcerpc_info *di; property_guids_t *pg; guint32 i; + guint32 min_idx; di = (dcerpc_info *)pinfo->private_data; pg = (property_guids_t*)di->private_data; - DISSECTOR_ASSERT(pg->id_idx == pg->size_idx); + if (pg->id_idx == pg->size_idx) { + min_idx = pg->id_idx; + } + else { + /* TODO: expert info */ + min_idx = MIN(pg->id_idx, pg->size_idx); + } sub_item = proto_tree_add_text(tree, tvb, offset, 0, "Properties"); sub_tree = proto_item_add_subtree(sub_item, ett_properties); old_offset = offset; - for (i = 0; i < pg->id_idx; i++) { + for (i = 0; i < min_idx; i++) { offset = dissect_dcom_ActivationProperty(tvb, offset, pinfo, sub_tree, drep, &pg->guid[i], pg->size[i]); } |