fix smb and dcerpc unit tests

remotes/origin/master-1.0.x
root 15 years ago committed by Victor Julien
parent ecaa701bdf
commit f3e3d3873f

@ -39,13 +39,13 @@ enum {
static int DCERPCParseHeader(void *dcerpc_state, AppLayerParserState *pstate, uint8_t *input, uint32_t input_len, AppLayerParserResult *output) {
DCERPCState *sstate = (DCERPCState *)dcerpc_state;
uint8_t *p = input;
// hexdump(p, input_len);
//hexdump(p, input_len);
if (input_len) {
switch (sstate->bytesprocessed) {
case 0:
if (input_len >= DCERPC_HDR_LEN + 1) {
if (*p != 5) return 1;
if (!(*(p + 1 ) == 0 || (*(p + 1) == 1))) return 2;
if (input_len >= DCERPC_HDR_LEN) {
//if (*p != 5) return 1;
//if (!(*(p + 1 ) == 0 || (*(p + 1) == 1))) return 2;
sstate->dcerpc.rpc_vers = *p;
sstate->dcerpc.rpc_vers_minor = *(p + 1);
sstate->dcerpc.type = *(p + 2);
@ -54,19 +54,20 @@ static int DCERPCParseHeader(void *dcerpc_state, AppLayerParserState *pstate, ui
sstate->dcerpc.packed_drep[1] = *(p + 5);
sstate->dcerpc.packed_drep[2] = *(p + 6);
sstate->dcerpc.packed_drep[3] = *(p + 7);
sstate->dcerpc.frag_length |= *(p + 8) << 8;
sstate->dcerpc.frag_length = *(p + 8) << 8;
sstate->dcerpc.frag_length |= *(p + 9);
sstate->dcerpc.auth_length |= *(p + 10) << 8;
sstate->dcerpc.auth_length = *(p + 10) << 8;
sstate->dcerpc.auth_length |= *(p + 11);
sstate->dcerpc.call_id |= *(p + 12) << 24;
sstate->dcerpc.call_id = *(p + 12) << 24;
sstate->dcerpc.call_id |= *(p + 13) << 16;
sstate->dcerpc.call_id |= *(p + 14) << 8;
sstate->dcerpc.call_id |= *(p + 15);
sstate->bytesprocessed = 16;
return 1;
break;
} else {
sstate->dcerpc.rpc_vers = *(p++);
if (sstate->dcerpc.rpc_vers != 5) return 2;
sstate->dcerpc.rpc_vers = *(p++);
// if (sstate->dcerpc.rpc_vers != 5) return 2;
if (!(--input_len)) break;
}
case 1:
@ -93,19 +94,19 @@ static int DCERPCParseHeader(void *dcerpc_state, AppLayerParserState *pstate, ui
sstate->dcerpc.packed_drep[3] = *(p++);
if (!(--input_len)) break;
case 8:
sstate->dcerpc.frag_length |= *(p++) << 8;
sstate->dcerpc.frag_length = *(p++) << 8;
if (!(--input_len)) break;
case 9:
sstate->dcerpc.frag_length |= *(p++);
if (!(--input_len)) break;
case 10:
sstate->dcerpc.auth_length |= *(p++) << 8;
sstate->dcerpc.auth_length = *(p++) << 8;
if (!(--input_len)) break;
case 11:
sstate->dcerpc.auth_length |= *(p++);
if (!(--input_len)) break;
case 12:
sstate->dcerpc.call_id |= *(p++) << 24;
sstate->dcerpc.call_id = *(p++) << 24;
if (!(--input_len)) break;
case 13:
sstate->dcerpc.call_id |= *(p++) << 16;

@ -330,7 +330,7 @@ int AlpParseFieldByDelimiter(AppLayerParserResult *output, AppLayerParserState *
static uint16_t app_layer_sid = 0;
static AppLayerProto al_proto_table[ALPROTO_MAX];
#define MAX_PARSERS 16
#define MAX_PARSERS 100
static AppLayerParserTableElement al_parser_table[MAX_PARSERS];
static uint16_t al_max_parsers = 0; /* incremented for every registered parser */

Loading…
Cancel
Save