aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcom-sysact.c
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2013-07-07 16:18:18 +0000
committerEvan Huus <eapache@gmail.com>2013-07-07 16:18:18 +0000
commitcd7712fd2f3064945ce001e1d82109852c3b3191 (patch)
treee40b0f24093256ad4f0244a63ace7596fe3dc7b8 /epan/dissectors/packet-dcom-sysact.c
parentebf30a7a5d6aa7ba34b9c323e7fd3520b43692e9 (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/packet-dcom-sysact.c')
-rw-r--r--epan/dissectors/packet-dcom-sysact.c31
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]);
}