Fix a endless loop condition in the smb parser and make dcerpc parser more quiet.

remotes/origin/master-1.0.x
Victor Julien 17 years ago
parent 16aebe5add
commit b99e10236c

@ -5,6 +5,7 @@
* \author Kirby Kuehl <kkuehl@gmail.com> * \author Kirby Kuehl <kkuehl@gmail.com>
*/ */
#include "suricata-common.h" #include "suricata-common.h"
#include "suricata.h"
#include "debug.h" #include "debug.h"
#include "decode.h" #include "decode.h"
@ -227,7 +228,9 @@ static uint32_t DCERPCParseBINDCTXItem(DCERPC *dcerpc, uint8_t *input, uint32_t
TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.uuid_list, dcerpc->dcerpcbindbindack.uuid_entry, TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.uuid_list, dcerpc->dcerpcbindbindack.uuid_entry,
next); next);
#ifdef UNITTESTS #ifdef UNITTESTS
printUUID("BIND", dcerpc->dcerpcbindbindack.uuid_entry); if (RunmodeIsUnittests()) {
printUUID("BIND", dcerpc->dcerpcbindbindack.uuid_entry);
}
#endif #endif
dcerpc->dcerpcbindbindack.numctxitemsleft--; dcerpc->dcerpcbindbindack.numctxitemsleft--;
dcerpc->bytesprocessed += (44); dcerpc->bytesprocessed += (44);
@ -431,7 +434,9 @@ static uint32_t DCERPCParseBINDCTXItem(DCERPC *dcerpc, uint8_t *input, uint32_t
TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.uuid_list, dcerpc->dcerpcbindbindack.uuid_entry, TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.uuid_list, dcerpc->dcerpcbindbindack.uuid_entry,
next); next);
#ifdef UNITTESTS #ifdef UNITTESTS
printUUID("BIND", dcerpc->dcerpcbindbindack.uuid_entry); if (RunmodeIsUnittests()) {
printUUID("BIND", dcerpc->dcerpcbindbindack.uuid_entry);
}
#endif #endif
dcerpc->dcerpcbindbindack.numctxitemsleft--; dcerpc->dcerpcbindbindack.numctxitemsleft--;
dcerpc->bytesprocessed += (44); dcerpc->bytesprocessed += (44);
@ -472,7 +477,9 @@ static uint32_t DCERPCParseBINDACKCTXItem(DCERPC *dcerpc, uint8_t *input, uint32
- dcerpc->dcerpcbindbindack.numctxitemsleft) { - dcerpc->dcerpcbindbindack.numctxitemsleft) {
uuid_entry->result = dcerpc->dcerpcbindbindack.result; uuid_entry->result = dcerpc->dcerpcbindbindack.result;
#ifdef UNITTESTS #ifdef UNITTESTS
printUUID("BIND_ACK", uuid_entry); if (RunmodeIsUnittests()) {
printUUID("BIND_ACK", uuid_entry);
}
#endif #endif
break; break;
} }
@ -582,7 +589,9 @@ static uint32_t DCERPCParseBINDACKCTXItem(DCERPC *dcerpc, uint8_t *input, uint32
- dcerpc->dcerpcbindbindack.numctxitemsleft) { - dcerpc->dcerpcbindbindack.numctxitemsleft) {
uuid_entry->result = dcerpc->dcerpcbindbindack.result; uuid_entry->result = dcerpc->dcerpcbindbindack.result;
#ifdef UNITTESTS #ifdef UNITTESTS
printUUID("BIND_ACK", uuid_entry); if (RunmodeIsUnittests()) {
printUUID("BIND_ACK", uuid_entry);
}
#endif #endif
break; break;
} }

@ -928,7 +928,7 @@ static int SMBParse(Flow *f, void *smb_state, AppLayerParserState *pstate,
long int parsed = 0; long int parsed = 0;
if (pstate == NULL) if (pstate == NULL)
SCReturnInt(-1); SCReturnInt(-1);
while (sstate->bytesprocessed < NBSS_HDR_LEN) { while (input_len && sstate->bytesprocessed < NBSS_HDR_LEN) {
retval retval
= NBSSParseHeader(f, smb_state, pstate, input, input_len, = NBSSParseHeader(f, smb_state, pstate, input, input_len,
output); output);

Loading…
Cancel
Save