From ebc1f62050da01c497dabc574f028e5fcfc4e3fb Mon Sep 17 00:00:00 2001 From: Anoop Saldanha Date: Fri, 3 Sep 2010 10:07:04 +0530 Subject: [PATCH] some additional indentation changes in DCERPCParser --- src/app-layer-dcerpc.c | 390 +++++++++++++++++++++-------------------- 1 file changed, 198 insertions(+), 192 deletions(-) diff --git a/src/app-layer-dcerpc.c b/src/app-layer-dcerpc.c index f448da0d68..182dea63f6 100644 --- a/src/app-layer-dcerpc.c +++ b/src/app-layer-dcerpc.c @@ -1129,226 +1129,232 @@ int32_t DCERPCParser(DCERPC *dcerpc, uint8_t *input, uint32_t input_len) { #endif switch (dcerpc->dcerpchdr.type) { - case BIND: - case ALTER_CONTEXT: - while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 12 - && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length - && input_len) { - retval = DCERPCParseBIND(dcerpc, input + parsed, input_len); - if (retval) { - parsed += retval; - input_len -= retval; - } else if (input_len) { - SCLogDebug("Error Parsing DCERPC %s", (dcerpc->dcerpchdr.type == BIND) ? "BIND" : "ALTER_CONTEXT"); - parsed = 0; - input_len = 0; + case BIND: + case ALTER_CONTEXT: + while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 12 + && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length + && input_len) { + retval = DCERPCParseBIND(dcerpc, input + parsed, input_len); + if (retval) { + parsed += retval; + input_len -= retval; + } else if (input_len) { + SCLogDebug("Error Parsing DCERPC %s", + (dcerpc->dcerpchdr.type == BIND) ? + "BIND" : "ALTER_CONTEXT"); + parsed = 0; + input_len = 0; + } } - } - SCLogDebug("Done with DCERPCParseBIND bytesprocessed %u/%u numctxitems %u", - dcerpc->bytesprocessed, dcerpc->dcerpchdr.frag_length, - dcerpc->dcerpcbindbindack.numctxitems); - while (dcerpc->dcerpcbindbindack.numctxitemsleft && dcerpc->bytesprocessed - < dcerpc->dcerpchdr.frag_length && input_len) { - retval = DCERPCParseBINDCTXItem(dcerpc, input + parsed, input_len); - if (retval) { - if (dcerpc->dcerpcbindbindack.ctxbytesprocessed == 44) { - dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; + SCLogDebug("Done with DCERPCParseBIND bytesprocessed %u/%u numctxitems %u", + dcerpc->bytesprocessed, dcerpc->dcerpchdr.frag_length, + dcerpc->dcerpcbindbindack.numctxitems); + while (dcerpc->dcerpcbindbindack.numctxitemsleft && dcerpc->bytesprocessed + < dcerpc->dcerpchdr.frag_length && input_len) { + retval = DCERPCParseBINDCTXItem(dcerpc, input + parsed, input_len); + if (retval) { + if (dcerpc->dcerpcbindbindack.ctxbytesprocessed == 44) { + dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; + } + parsed += retval; + input_len -= retval; + SCLogDebug("BIND processed %u/%u ctxitems %u/%u input_len left %u\n", + dcerpc->bytesprocessed, + dcerpc->dcerpchdr.frag_length, + dcerpc->dcerpcbindbindack.numctxitemsleft, + dcerpc->dcerpcbindbindack.numctxitems, input_len); + } else if (input_len) { + //parsed -= input_len; + parsed = 0; + SCLogDebug("Error Parsing CTX Item %u\n", parsed); + input_len = 0; + dcerpc->dcerpcbindbindack.numctxitemsleft = 0; } - parsed += retval; - input_len -= retval; - SCLogDebug("BIND processed %u/%u ctxitems %u/%u input_len left %u\n", - dcerpc->bytesprocessed, - dcerpc->dcerpchdr.frag_length, dcerpc->dcerpcbindbindack.numctxitemsleft, - dcerpc->dcerpcbindbindack.numctxitems, input_len); - } else if (input_len) { - //parsed -= input_len; - parsed = 0; - SCLogDebug("Error Parsing CTX Item %u\n", parsed); - input_len = 0; - dcerpc->dcerpcbindbindack.numctxitemsleft = 0; } - } - if (dcerpc->bytesprocessed == dcerpc->dcerpchdr.frag_length) { - dcerpc->bytesprocessed = 0; - dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; - } - break; + if (dcerpc->bytesprocessed == dcerpc->dcerpchdr.frag_length) { + dcerpc->bytesprocessed = 0; + dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; + } + break; - case BIND_ACK: - case ALTER_CONTEXT_RESP: - while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 9 - && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length - && input_len) { - retval = DCERPCParseBINDACK(dcerpc, input + parsed, input_len); - if (retval) { - parsed += retval; - input_len -= retval; - SCLogDebug("DCERPCParseBINDACK processed %u/%u input_len left %u", - dcerpc->bytesprocessed, dcerpc->dcerpchdr.frag_length, input_len); - } else if (input_len) { - SCLogDebug("Error parsing %s\n", (dcerpc->dcerpchdr.type == BIND_ACK) ? "BIND_ACK" : "ALTER_CONTEXT_RESP"); - parsed = 0; - input_len = 0; + case BIND_ACK: + case ALTER_CONTEXT_RESP: + while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 9 + && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length + && input_len) { + retval = DCERPCParseBINDACK(dcerpc, input + parsed, input_len); + if (retval) { + parsed += retval; + input_len -= retval; + SCLogDebug("DCERPCParseBINDACK processed %u/%u input_len left %u", + dcerpc->bytesprocessed, + dcerpc->dcerpchdr.frag_length, input_len); + } else if (input_len) { + SCLogDebug("Error parsing %s\n", + (dcerpc->dcerpchdr.type == BIND_ACK) ? + "BIND_ACK" : "ALTER_CONTEXT_RESP"); + parsed = 0; + input_len = 0; + } } - } - while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 10 - + dcerpc->dcerpcbindbindack.secondaryaddrlen - && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length && input_len) { - retval = DCERPCParseSecondaryAddr(dcerpc, input + parsed, input_len); - if (retval) { - parsed += retval; - input_len -= retval; - SCLogDebug( - "DCERPCParseSecondaryAddr %u/%u left %u secondaryaddr len(%u)", - dcerpc->bytesprocessed, dcerpc->dcerpchdr.frag_length, input_len, - dcerpc->dcerpcbindbindack.secondaryaddrlen); - } else if (input_len) { - SCLogDebug("Error parsing Secondary Address"); - parsed = 0; - input_len = 0; + while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 10 + + dcerpc->dcerpcbindbindack.secondaryaddrlen + && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length && input_len) { + retval = DCERPCParseSecondaryAddr(dcerpc, input + parsed, input_len); + if (retval) { + parsed += retval; + input_len -= retval; + SCLogDebug("DCERPCParseSecondaryAddr %u/%u left %u secondaryaddr len(%u)", + dcerpc->bytesprocessed, dcerpc->dcerpchdr.frag_length, input_len, + dcerpc->dcerpcbindbindack.secondaryaddrlen); + } else if (input_len) { + SCLogDebug("Error parsing Secondary Address"); + parsed = 0; + input_len = 0; + } } - } - if (dcerpc->bytesprocessed == DCERPC_HDR_LEN + 10 - + dcerpc->dcerpcbindbindack.secondaryaddrlen) { - if (dcerpc->bytesprocessed % 4) { - dcerpc->pad = (4 - dcerpc->bytesprocessed % 4); - dcerpc->padleft = dcerpc->pad; + if (dcerpc->bytesprocessed == DCERPC_HDR_LEN + 10 + + dcerpc->dcerpcbindbindack.secondaryaddrlen) { + if (dcerpc->bytesprocessed % 4) { + dcerpc->pad = (4 - dcerpc->bytesprocessed % 4); + dcerpc->padleft = dcerpc->pad; + } } - } - while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 10 - + dcerpc->dcerpcbindbindack.secondaryaddrlen + dcerpc->pad - && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length && input_len) { - retval = PaddingParser(dcerpc, input + parsed, input_len); - if (retval) { - parsed += retval; - input_len -= retval; - SCLogDebug("PaddingParser %u/%u left %u pad(%u)", - dcerpc->bytesprocessed, dcerpc->dcerpchdr.frag_length, input_len, - dcerpc->pad); - } else if (input_len) { - SCLogDebug("Error parsing DCERPC Padding"); - parsed = 0; - input_len = 0; + while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 10 + + dcerpc->dcerpcbindbindack.secondaryaddrlen + dcerpc->pad + && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length && input_len) { + retval = PaddingParser(dcerpc, input + parsed, input_len); + if (retval) { + parsed += retval; + input_len -= retval; + SCLogDebug("PaddingParser %u/%u left %u pad(%u)", + dcerpc->bytesprocessed, dcerpc->dcerpchdr.frag_length, input_len, + dcerpc->pad); + } else if (input_len) { + SCLogDebug("Error parsing DCERPC Padding"); + parsed = 0; + input_len = 0; + } } - } - while (dcerpc->bytesprocessed >= DCERPC_HDR_LEN + 10 + dcerpc->pad - + dcerpc->dcerpcbindbindack.secondaryaddrlen && dcerpc->bytesprocessed - < DCERPC_HDR_LEN + 14 + dcerpc->pad + dcerpc->dcerpcbindbindack.secondaryaddrlen - && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length && input_len) { - retval = DCERPCGetCTXItems(dcerpc, input + parsed, input_len); - if (retval) { - parsed += retval; - input_len -= retval; - SCLogDebug("DCERPCGetCTXItems %u/%u (%u)", dcerpc->bytesprocessed, - dcerpc->dcerpchdr.frag_length, dcerpc->dcerpcbindbindack.numctxitems); - } else if (input_len) { - SCLogDebug("Error parsing CTX Items"); - parsed = 0; - input_len = 0; + while (dcerpc->bytesprocessed >= DCERPC_HDR_LEN + 10 + dcerpc->pad + + dcerpc->dcerpcbindbindack.secondaryaddrlen && dcerpc->bytesprocessed + < DCERPC_HDR_LEN + 14 + dcerpc->pad + dcerpc->dcerpcbindbindack.secondaryaddrlen + && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length && input_len) { + retval = DCERPCGetCTXItems(dcerpc, input + parsed, input_len); + if (retval) { + parsed += retval; + input_len -= retval; + SCLogDebug("DCERPCGetCTXItems %u/%u (%u)", dcerpc->bytesprocessed, + dcerpc->dcerpchdr.frag_length, dcerpc->dcerpcbindbindack.numctxitems); + } else if (input_len) { + SCLogDebug("Error parsing CTX Items"); + parsed = 0; + input_len = 0; + } } - } - if (dcerpc->bytesprocessed == DCERPC_HDR_LEN + 14 + dcerpc->pad - + dcerpc->dcerpcbindbindack.secondaryaddrlen) { - dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; - } + if (dcerpc->bytesprocessed == DCERPC_HDR_LEN + 14 + dcerpc->pad + + dcerpc->dcerpcbindbindack.secondaryaddrlen) { + dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; + } + + while (dcerpc->dcerpcbindbindack.numctxitemsleft && dcerpc->bytesprocessed + < dcerpc->dcerpchdr.frag_length && input_len) { + retval = DCERPCParseBINDACKCTXItem(dcerpc, input + parsed, input_len); + if (retval) { + if (dcerpc->dcerpcbindbindack.ctxbytesprocessed == 24) { + dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; + } + parsed += retval; + input_len -= retval; + } else if (input_len) { + SCLogDebug("Error parsing CTX Items"); + parsed = 0; + input_len = 0; + dcerpc->dcerpcbindbindack.numctxitemsleft = 0; - while (dcerpc->dcerpcbindbindack.numctxitemsleft && dcerpc->bytesprocessed - < dcerpc->dcerpchdr.frag_length && input_len) { - retval = DCERPCParseBINDACKCTXItem(dcerpc, input + parsed, input_len); - if (retval) { - if (dcerpc->dcerpcbindbindack.ctxbytesprocessed == 24) { - dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; } - parsed += retval; - input_len -= retval; - } else if (input_len) { - SCLogDebug("Error parsing CTX Items"); - parsed = 0; - input_len = 0; - dcerpc->dcerpcbindbindack.numctxitemsleft = 0; + } + SCLogDebug("BINDACK processed %u/%u input_len left %u", + dcerpc->bytesprocessed, + dcerpc->dcerpchdr.frag_length, input_len); + if (dcerpc->bytesprocessed == dcerpc->dcerpchdr.frag_length) { + dcerpc->bytesprocessed = 0; + dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; + + /* response and request done */ + if (dcerpc->dcerpchdr.type == BIND_ACK) { + /* update transaction id */ + dcerpc->transaction_id++; + SCLogDebug("transaction_id updated to %"PRIu16, + dcerpc->transaction_id); + } + } + break; + case REQUEST: + case RESPONSE: + while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 8 + && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length + && input_len) { + retval = DCERPCParseREQUEST(dcerpc, input + parsed, input_len); + if (retval) { + parsed += retval; + input_len -= retval; + dcerpc->padleft = dcerpc->dcerpchdr.frag_length - dcerpc->bytesprocessed; + } else if (input_len) { + SCLogDebug("Error parsing DCERPC %s", + (dcerpc->dcerpchdr.type == REQUEST) ? "REQUEST" : "RESPONSE"); + parsed = 0; + dcerpc->padleft = 0; + input_len = 0; + } } - } - SCLogDebug("BINDACK processed %u/%u input_len left %u", dcerpc->bytesprocessed, - dcerpc->dcerpchdr.frag_length, input_len); - if (dcerpc->bytesprocessed == dcerpc->dcerpchdr.frag_length) { - dcerpc->bytesprocessed = 0; - dcerpc->dcerpcbindbindack.ctxbytesprocessed = 0; - /* response and request done */ - if (dcerpc->dcerpchdr.type == BIND_ACK) { - /* update transaction id */ - dcerpc->transaction_id++; - SCLogDebug("transaction_id updated to %"PRIu16, - dcerpc->transaction_id); + while (dcerpc->bytesprocessed >= DCERPC_HDR_LEN + 8 + && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length + && dcerpc->padleft && input_len) { + retval = StubDataParser(dcerpc, input + parsed, input_len); + if (retval) { + parsed += retval; + input_len -= retval; + } else if (input_len) { + SCLogDebug("Error parsing DCERPC Stub Data"); + parsed = 0; + input_len = 0; + dcerpc->bytesprocessed = 0; + } } - } - break; - case REQUEST: - case RESPONSE: - while (dcerpc->bytesprocessed < DCERPC_HDR_LEN + 8 - && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length - && input_len) { - retval = DCERPCParseREQUEST(dcerpc, input + parsed, input_len); - if (retval) { - parsed += retval; - input_len -= retval; - dcerpc->padleft = dcerpc->dcerpchdr.frag_length - dcerpc->bytesprocessed; - } else if (input_len) { - SCLogDebug("Error parsing DCERPC %s", - (dcerpc->dcerpchdr.type == REQUEST) ? "REQUEST" : "RESPONSE"); - parsed = 0; - dcerpc->padleft = 0; - input_len = 0; + if (dcerpc->dcerpchdr.type == REQUEST) { + SCLogDebug("REQUEST processed %u frag length %u opnum %u input_len %u", dcerpc->bytesprocessed, + dcerpc->dcerpchdr.frag_length, dcerpc->dcerpcrequest.opnum, input_len); + } else { + SCLogDebug("RESPONSE processed %u frag length %u opnum %u input_len %u", dcerpc->bytesprocessed, + dcerpc->dcerpchdr.frag_length, dcerpc->dcerpcrequest.opnum, input_len); } - } - while (dcerpc->bytesprocessed >= DCERPC_HDR_LEN + 8 - && dcerpc->bytesprocessed < dcerpc->dcerpchdr.frag_length - && dcerpc->padleft && input_len) { - retval = StubDataParser(dcerpc, input + parsed, input_len); - if (retval) { - parsed += retval; - input_len -= retval; - } else if (input_len) { - SCLogDebug("Error parsing DCERPC Stub Data"); - parsed = 0; - input_len = 0; + if (dcerpc->bytesprocessed == dcerpc->dcerpchdr.frag_length) { dcerpc->bytesprocessed = 0; } - } - if (dcerpc->dcerpchdr.type == REQUEST) { - SCLogDebug("REQUEST processed %u frag length %u opnum %u input_len %u", dcerpc->bytesprocessed, - dcerpc->dcerpchdr.frag_length, dcerpc->dcerpcrequest.opnum, input_len); - } else { - SCLogDebug("RESPONSE processed %u frag length %u opnum %u input_len %u", dcerpc->bytesprocessed, - dcerpc->dcerpchdr.frag_length, dcerpc->dcerpcrequest.opnum, input_len); - } + /* response and request done */ + if (dcerpc->dcerpchdr.type == RESPONSE) { + /* update transaction id */ + dcerpc->transaction_id++; + SCLogDebug("transaction_id updated to %"PRIu16, + dcerpc->transaction_id); + } + break; - if (dcerpc->bytesprocessed == dcerpc->dcerpchdr.frag_length) { + default: + SCLogDebug("DCERPC Type 0x%02x not implemented yet", dcerpc->dcerpchdr.type); dcerpc->bytesprocessed = 0; - } - - /* response and request done */ - if (dcerpc->dcerpchdr.type == RESPONSE) { - /* update transaction id */ - dcerpc->transaction_id++; - SCLogDebug("transaction_id updated to %"PRIu16, - dcerpc->transaction_id); - } - break; - - default: - SCLogDebug("DCERPC Type 0x%02x not implemented yet", dcerpc->dcerpchdr.type); - dcerpc->bytesprocessed = 0; - break; + break; } dcerpc->bytesprocessed = 0; }