diff --git a/src/app-layer-dcerpc.c b/src/app-layer-dcerpc.c index b85ea042fe..03e5fe5bd9 100644 --- a/src/app-layer-dcerpc.c +++ b/src/app-layer-dcerpc.c @@ -19,6 +19,7 @@ * \file * * \author Kirby Kuehl + * \author Anoop Saldanha * * DCE/RPC parser and decoder */ @@ -1327,6 +1328,11 @@ int32_t DCERPCParser(DCERPC *dcerpc, uint8_t *input, uint32_t input_len) { DCERPCResetParsingState(dcerpc); SCReturnInt(0); } else { + /* temporary fix */ + if (dcerpc->dcerpchdr.auth_length != 0 && input_len) { + DCERPCResetParsingState(dcerpc); + SCReturnInt(0); + } dcerpc->pdu_fragged = 1; } break; @@ -1459,6 +1465,11 @@ int32_t DCERPCParser(DCERPC *dcerpc, uint8_t *input, uint32_t input_len) { DCERPCResetParsingState(dcerpc); SCReturnInt(0); } else { + /* temporary fix */ + if (dcerpc->dcerpchdr.auth_length != 0 && input_len) { + DCERPCResetParsingState(dcerpc); + SCReturnInt(0); + } dcerpc->pdu_fragged = 1; } break; @@ -1521,6 +1532,11 @@ int32_t DCERPCParser(DCERPC *dcerpc, uint8_t *input, uint32_t input_len) { dcerpc->dcerpchdr.pfc_flags & PFC_FIRST_FRAG) { DCERPCResetStub(dcerpc); } + /* temporary fix */ + if (dcerpc->dcerpchdr.auth_length != 0 && input_len) { + DCERPCResetParsingState(dcerpc); + SCReturnInt(0); + } dcerpc->pdu_fragged = 1; }