If "dissect_dcerpc_cn()" throws an exception when called by

"dissect_dcerpc_cn_bs_body()", it's because it recognized the packet as
a DCE RPC packet, but it ran out of data dissecting it as such;
increment the count of DCE RPC PDUs, so "dissect_dcerpc_cn_bs_body()"
returns TRUE, and its caller doesn't think nothing was dissected.

Fuzzed with some DCE RPC captures.

svn path=/trunk/; revision=16000
This commit is contained in:
Guy Harris 2005-09-25 09:06:48 +00:00
parent 35cfa4c11c
commit d77101151a
1 changed files with 5 additions and 0 deletions

View File

@ -4150,6 +4150,11 @@ dissect_dcerpc_cn_bs_body (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
RETHROW;
} CATCH(ReportedBoundsError) {
show_reported_bounds_error(tvb, pinfo, tree);
/*
* Presumably it looked enough like a DCE RPC PDU that we
* dissected enough of it to throw an exception.
*/
dcerpc_pdus++;
} ENDTRY;
if (!dcerpc_pdus) {