aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcerpc.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2016-08-13 20:41:55 -0400
committerMichael Mann <mmann78@netscape.net>2016-08-14 02:37:46 +0000
commit7c66a6b8dc8f32c9dd571884ac59bb0db7ee64b6 (patch)
tree36b61358c07dfcc673ad1a75148b48798b18eb8f /epan/dissectors/packet-dcerpc.c
parentc0f24bdf6c255068d3de386b00c1d0db3041a98f (diff)
dcerpc: Check dissect_ndr_ucvarray_core when looping over elements that we're incrementing offset.
Bug: 12720 Change-Id: Ib9c9eb2e60c35b23b4c6b4898b036bcdc442fc84 Reviewed-on: https://code.wireshark.org/review/17041 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-dcerpc.c')
-rw-r--r--epan/dissectors/packet-dcerpc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c
index b1d8cebe19..750f7ed6d1 100644
--- a/epan/dissectors/packet-dcerpc.c
+++ b/epan/dissectors/packet-dcerpc.c
@@ -2414,7 +2414,11 @@ dissect_ndr_ucvarray_core(tvbuff_t *tvb, gint offset, packet_info *pinfo,
pinfo, tree, di, drep);
} else if (fnct_bytes) {
for (i=0 ;i<di->array_actual_count; i++) {
+ old_offset = offset;
offset = (*fnct_bytes)(tvb, offset, pinfo, tree, di, drep);
+ /* Make sure we're moving forward */
+ if (old_offset >= offset)
+ break;
}
}
}