From: Eric Leblond Date: Tue, 27 Aug 2013 07:09:11 +0000 (+0200) Subject: unittests: some functions needs a flow lock. X-Git-Tag: suricata-2.0beta2~425 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cd3e32ce19e67615ea43c20020d65071a21b7011;p=thirdparty%2Fsuricata.git unittests: some functions needs a flow lock. In debug validation mode, it is required to call application layer parsing and other functions with a lock on flow. This patch updates the code to do so. --- diff --git a/src/app-layer-dcerpc-udp.c b/src/app-layer-dcerpc-udp.c index bf8777c183..3163a673bb 100644 --- a/src/app-layer-dcerpc-udp.c +++ b/src/app-layer-dcerpc-udp.c @@ -939,12 +939,15 @@ int DCERPCUDPParserTest01(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DCERPC_UDP, STREAM_TOSERVER|STREAM_START, dcerpcrequest, requestlen); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCUDPState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { diff --git a/src/app-layer-dcerpc.c b/src/app-layer-dcerpc.c index e9374e129f..45cd272be3 100644 --- a/src/app-layer-dcerpc.c +++ b/src/app-layer-dcerpc.c @@ -2257,12 +2257,15 @@ int DCERPCParserTest01(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER|STREAM_START, dcerpcbind, bindlen); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -2290,12 +2293,15 @@ int DCERPCParserTest01(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpcbindack, bindacklen); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (dcerpc_state->dcerpc.dcerpchdr.type != BIND_ACK) { printf("expected dcerpc type 0x%02x , got 0x%02x : ", BIND_ACK, dcerpc_state->dcerpc.dcerpchdr.type); result = 0; @@ -2311,12 +2317,15 @@ int DCERPCParserTest01(void) { printUUID("BIND_ACK", uuid_entry); } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER|STREAM_EOF, dcerpcrequest, requestlen); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (dcerpc_state->dcerpc.dcerpchdr.type != REQUEST) { printf("expected dcerpc type 0x%02x , got 0x%02x : ", REQUEST, dcerpc_state->dcerpc.dcerpchdr.type); result = 0; @@ -2475,12 +2484,15 @@ int DCERPCParserTest02(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER|STREAM_START, dcerpcrequest, requestlen); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -2667,12 +2679,15 @@ int DCERPCParserTest03(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER|STREAM_START, dcerpcrequest, requestlen); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4103,13 +4118,16 @@ int DCERPCParserTest05(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, bind1, bind1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4126,13 +4144,16 @@ int DCERPCParserTest05(void) { m++; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind2, bind2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); item = NULL; m = 0; @@ -4267,13 +4288,16 @@ int DCERPCParserTest06(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER|STREAM_START, bind1, bind1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4287,13 +4311,16 @@ int DCERPCParserTest06(void) { result &= (dcerpc_state->dcerpc.dcerpcbindbindack.numctxitems == 16); result &= (dcerpc_state->dcerpc.dcerpcbindbindack.numctxitemsleft == 8); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind2, bind2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 0); result &= (dcerpc_state->dcerpc.dcerpcbindbindack.ctxbytesprocessed == 0); @@ -4342,13 +4369,16 @@ int DCERPCParserTest07(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER|STREAM_START, request1, request1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4362,26 +4392,32 @@ int DCERPCParserTest07(void) { dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer_len == 12); result &= (dcerpc_state->dcerpc.pdu_fragged = 1); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 38); result &= (dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer != NULL && dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer_len == 14); result &= (dcerpc_state->dcerpc.pdu_fragged = 1); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request3, request3_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 0); result &= (dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer != NULL && @@ -4420,13 +4456,16 @@ int DCERPCParserTest08(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, request, request_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4472,13 +4511,16 @@ int DCERPCParserTest09(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, request, request_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4538,13 +4580,16 @@ int DCERPCParserTest10(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER|STREAM_START, fault, fault_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4553,25 +4598,31 @@ int DCERPCParserTest10(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 2); result &= (dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer == NULL); result &= (dcerpc_state->dcerpc.pdu_fragged == 1); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 0); result &= (dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer != NULL && @@ -4625,13 +4676,16 @@ int DCERPCParserTest11(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4645,24 +4699,30 @@ int DCERPCParserTest11(void) { dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer_len == 12); result &= (dcerpc_state->dcerpc.pdu_fragged == 0); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 2); result &= (dcerpc_state->dcerpc.pdu_fragged == 1); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request3, request3_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 0); result &= (dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer != NULL && @@ -4710,13 +4770,16 @@ int DCERPCParserTest12(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, bind_ack1, bind_ack1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4728,13 +4791,16 @@ int DCERPCParserTest12(void) { result &= (dcerpc_state->dcerpc.bytesprocessed == 24); result &= (dcerpc_state->dcerpc.pdu_fragged == 1); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, bind_ack2, bind_ack2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 0); result &= (dcerpc_state->dcerpc.pdu_fragged == 0); @@ -4777,13 +4843,16 @@ int DCERPCParserTest13(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind, bind_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4860,13 +4929,16 @@ int DCERPCParserTest14(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind, bind_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -4914,13 +4986,16 @@ int DCERPCParserTest15(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, bind_ack, bind_ack_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -5368,13 +5443,16 @@ int DCERPCParserTest16(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind1, bind1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -5383,13 +5461,16 @@ int DCERPCParserTest16(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, bind_ack1, bind_ack1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5412,13 +5493,16 @@ int DCERPCParserTest16(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind2, bind2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5429,13 +5513,16 @@ int DCERPCParserTest16(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, bind_ack2, bind_ack2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5458,13 +5545,16 @@ int DCERPCParserTest16(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind3, bind3_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5475,13 +5565,16 @@ int DCERPCParserTest16(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, bind_ack3, bind_ack3_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5591,13 +5684,16 @@ int DCERPCParserTest17(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, bind, bind_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -5606,13 +5702,16 @@ int DCERPCParserTest17(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, bind_ack, bind_ack_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5635,13 +5734,16 @@ int DCERPCParserTest17(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, alter_context, alter_context_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5652,13 +5754,16 @@ int DCERPCParserTest17(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, alter_context_resp, alter_context_resp_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); count = 0; TAILQ_FOREACH(item, &dcerpc_state->dcerpc.dcerpcbindbindack.accepted_uuid_list, next) { @@ -5719,13 +5824,16 @@ int DCERPCParserTest18(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -5738,13 +5846,16 @@ int DCERPCParserTest18(void) { result &= (dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer == NULL); result &= (dcerpc_state->dcerpc.pdu_fragged == 1); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result &= (dcerpc_state->dcerpc.bytesprocessed == 0); result &= (dcerpc_state->dcerpc.dcerpcrequest.stub_data_buffer != NULL && @@ -5975,11 +6086,14 @@ int DCERPCParserTest19(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpcbind, bindlen); if (r != 0) { printf("dcerpc header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); DCERPCState *dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -5992,11 +6106,14 @@ int DCERPCParserTest19(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpcbindack, bindacklen); if (r == 0) { printf("dce parser didn't return fail\n"); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result = 1; end: diff --git a/src/app-layer-detect-proto.c b/src/app-layer-detect-proto.c index a93eb28eed..32f293be5d 100644 --- a/src/app-layer-detect-proto.c +++ b/src/app-layer-detect-proto.c @@ -1338,11 +1338,14 @@ static int AlpDetectTestSig1(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1425,11 +1428,14 @@ static int AlpDetectTestSig2(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1514,11 +1520,14 @@ static int AlpDetectTestSig3(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1599,11 +1608,14 @@ static int AlpDetectTestSig4(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_FTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); @@ -1696,11 +1708,14 @@ static int AlpDetectTestSig5(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); diff --git a/src/app-layer-ftp.c b/src/app-layer-ftp.c index 69ec7fb76e..f52d8d3e1d 100644 --- a/src/app-layer-ftp.c +++ b/src/app-layer-ftp.c @@ -312,12 +312,15 @@ int FTPParserTest01(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER|STREAM_EOF, ftpbuf, ftplen); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); FtpState *ftp_state = f.alstate; if (ftp_state == NULL) { @@ -356,26 +359,35 @@ int FTPParserTest03(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER|STREAM_START, ftpbuf1, ftplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER, ftpbuf2, ftplen2); if (r != 0) { SCLogDebug("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER|STREAM_EOF, ftpbuf3, ftplen3); if (r != 0) { SCLogDebug("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); FtpState *ftp_state = f.alstate; if (ftp_state == NULL) { @@ -411,12 +423,15 @@ int FTPParserTest06(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, ftpbuf1, ftplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); FtpState *ftp_state = f.alstate; if (ftp_state == NULL) { @@ -455,19 +470,25 @@ int FTPParserTest07(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER|STREAM_START, ftpbuf1, ftplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER|STREAM_EOF, ftpbuf2, ftplen2); if (r != 0) { SCLogDebug("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); FtpState *ftp_state = f.alstate; if (ftp_state == NULL) { @@ -513,12 +534,15 @@ int FTPParserTest10(void) { else if (u == (ftplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_FTP, flags, &ftpbuf1[u], 1); if (r != 0) { SCLogDebug("toserver chunk %" PRIu32 " returned %" PRId32 ", expected 0: ", u, r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); } FtpState *ftp_state = f.alstate; diff --git a/src/app-layer-htp-file.c b/src/app-layer-htp-file.c index 77b1b5526f..972566e206 100644 --- a/src/app-layer-htp-file.c +++ b/src/app-layer-htp-file.c @@ -321,20 +321,26 @@ static int HTPFileParserTest01(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -402,36 +408,48 @@ static int HTPFileParserTest02(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 3 size %u <<<<\n", httplen3); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 4 size %u <<<<\n", httplen4); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -509,52 +527,70 @@ static int HTPFileParserTest03(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 3 size %u <<<<\n", httplen3); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 4 size %u <<<<\n", httplen4); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 5 size %u <<<<\n", httplen5); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 6 size %u <<<<\n", httplen6); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -637,52 +673,70 @@ static int HTPFileParserTest04(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 3 size %u <<<<\n", httplen3); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 4 size %u <<<<\n", httplen4); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 5 size %u <<<<\n", httplen5); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 6 size %u <<<<\n", httplen6); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -751,20 +805,26 @@ static int HTPFileParserTest05(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 size %u <<<<\n", httplen1); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -865,20 +925,26 @@ static int HTPFileParserTest06(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 size %u <<<<\n", httplen1); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -968,20 +1034,26 @@ static int HTPFileParserTest07(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 size %u <<<<\n", httplen1); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1058,20 +1130,26 @@ static int HTPFileParserTest08(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1080,11 +1158,14 @@ static int HTPFileParserTest08(void) { goto end; } + SCMutexLock(&f->m); AppLayerDecoderEvents *decoder_events = AppLayerGetDecoderEventsForFlow(f); if (decoder_events == NULL) { printf("no app events: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); if (decoder_events->cnt != 2) { printf("expected 2 events: "); @@ -1140,36 +1221,48 @@ static int HTPFileParserTest09(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 3 size %u <<<<\n", httplen3); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 4 size %u <<<<\n", httplen4); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1178,11 +1271,14 @@ static int HTPFileParserTest09(void) { goto end; } + SCMutexLock(&f->m); AppLayerDecoderEvents *decoder_events = AppLayerGetDecoderEventsForFlow(f); if (decoder_events == NULL) { printf("no app events: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); if (decoder_events->cnt != 1) { printf("expected 1 event: "); @@ -1236,36 +1332,48 @@ static int HTPFileParserTest10(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 3 size %u <<<<\n", httplen3); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 4 size %u <<<<\n", httplen4); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1274,11 +1382,14 @@ static int HTPFileParserTest10(void) { goto end; } + SCMutexLock(&f->m); AppLayerDecoderEvents *decoder_events = AppLayerGetDecoderEventsForFlow(f); if (decoder_events != NULL) { printf("app events: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); result = 1; end: @@ -1355,32 +1466,44 @@ static int HTPFileParserTest11(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 3 size %u <<<<\n", httplen3); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 4 size %u <<<<\n", httplen4); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -1388,11 +1511,14 @@ static int HTPFileParserTest11(void) { goto end; } + SCMutexLock(&f->m); AppLayerDecoderEvents *decoder_events = AppLayerGetDecoderEventsForFlow(f); if (decoder_events != NULL) { printf("app events: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); htp_tx_t *tx = AppLayerGetTx(ALPROTO_HTTP, http_state, 0); if (tx == NULL) { diff --git a/src/app-layer-htp.c b/src/app-layer-htp.c index 4d8462b6db..5156b3d3a5 100644 --- a/src/app-layer-htp.c +++ b/src/app-layer-htp.c @@ -2487,13 +2487,16 @@ int HTPParserTest01(void) { else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -2544,13 +2547,16 @@ int HTPParserTest02(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START| STREAM_EOF, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -2604,13 +2610,16 @@ int HTPParserTest03(void) { else if (u == (httplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; if (htp_state == NULL) { @@ -2660,11 +2669,14 @@ int HTPParserTest04(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START| STREAM_EOF, httpbuf1, httplen1); if (r != 0) { + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); htp_state = f->alstate; if (htp_state == NULL) { @@ -2723,11 +2735,13 @@ int HTPParserTest05(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } @@ -2736,6 +2750,7 @@ int HTPParserTest05(void) { if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } @@ -2743,6 +2758,7 @@ int HTPParserTest05(void) { if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } @@ -2750,6 +2766,7 @@ int HTPParserTest05(void) { if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } @@ -2758,6 +2775,7 @@ int HTPParserTest05(void) { if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } @@ -2766,8 +2784,10 @@ int HTPParserTest05(void) { if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -2863,11 +2883,13 @@ int HTPParserTest06(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } @@ -2876,8 +2898,10 @@ int HTPParserTest06(void) { if (r != 0) { printf("toclient chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -2947,12 +2971,15 @@ int HTPParserTest07(void) { else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -3038,13 +3065,16 @@ libhtp:\n\ uint8_t flags = 0; flags = STREAM_TOSERVER|STREAM_START|STREAM_EOF; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk returned %" PRId32 ", expected" " 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); htp_state = f->alstate; if (htp_state == NULL) { @@ -3117,13 +3147,16 @@ libhtp:\n\ uint8_t flags = 0; flags = STREAM_TOSERVER|STREAM_START|STREAM_EOF; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk returned %" PRId32 ", expected" " 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); htp_state = f->alstate; if (htp_state == NULL) { @@ -3187,12 +3220,15 @@ int HTPParserTest10(void) { else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -3271,12 +3307,15 @@ static int HTPParserTest11(void) { else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -3348,12 +3387,15 @@ static int HTPParserTest12(void) { else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -3428,12 +3470,15 @@ int HTPParserTest13(void) { else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -3837,13 +3882,16 @@ libhtp:\n\ else if (u == (httplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -4013,13 +4061,16 @@ libhtp:\n\ else if (u == (httplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -4177,13 +4228,16 @@ libhtp:\n\ else if (u == (httplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -4339,13 +4393,16 @@ libhtp:\n\ else if (u == (httplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -4471,13 +4528,16 @@ libhtp:\n\ else if (u == (httplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -4576,13 +4636,16 @@ libhtp:\n\ else if (u == (httplen1 - 1)) flags = STREAM_TOSERVER|STREAM_EOF; else flags = STREAM_TOSERVER; + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, flags, &httpbuf1[u], 1); if (r != 0) { printf("toserver chunk %" PRIu32 " returned %" PRId32 ", expected" " 0: ", u, r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); } htp_state = f->alstate; @@ -4724,19 +4787,25 @@ libhtp:\n\ StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SCLogDebug("\n>>>> processing chunk 1 again <<<<\n"); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); http_state = f->alstate; if (http_state == NULL) { @@ -4745,11 +4814,14 @@ libhtp:\n\ goto end; } + SCMutexLock(&f->m); AppLayerDecoderEvents *decoder_events = AppLayerGetDecoderEventsForFlow(f); if (decoder_events != NULL) { printf("app events: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); result = 1; end: HTPFreeConfig(); diff --git a/src/app-layer-parser.c b/src/app-layer-parser.c index 0f1135d694..8a93ca6179 100644 --- a/src/app-layer-parser.c +++ b/src/app-layer-parser.c @@ -2058,12 +2058,15 @@ static int AppLayerParserTest01 (void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_TEST, STREAM_TOSERVER|STREAM_EOF, testbuf, testlen); if (r != -1) { printf("returned %" PRId32 ", expected -1: ", r); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); if (!(f->flags & FLOW_NO_APPLAYER_INSPECTION)) { @@ -2103,13 +2106,16 @@ static int AppLayerParserTest02 (void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_TEST, STREAM_TOSERVER|STREAM_EOF, testbuf, testlen); if (r != -1) { printf("returned %" PRId32 ", expected -1: \n", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); end: StreamTcpFreeConfig(TRUE); diff --git a/src/app-layer-smb.c b/src/app-layer-smb.c index e957b12976..2d5a6cfc8e 100644 --- a/src/app-layer-smb.c +++ b/src/app-layer-smb.c @@ -1456,11 +1456,14 @@ int SMBParserTest01(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER|STREAM_EOF, smbbuf, smblen); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -1525,11 +1528,14 @@ int SMBParserTest02(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER|STREAM_EOF, smbbuf, smblen); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -1813,11 +1819,14 @@ int SMBParserTest03(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER|STREAM_START, smbbuf1, smblen1); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -1830,16 +1839,22 @@ int SMBParserTest03(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER, smbbuf2, smblen2); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER, smbbuf3, smblen3); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); printUUID("BIND", smb_state->dcerpc.dcerpcbindbindack.uuid_entry); result = 1; end: @@ -1916,11 +1931,14 @@ int SMBParserTest04(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER|STREAM_START, smbbuf1, smblen1); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -1933,21 +1951,30 @@ int SMBParserTest04(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER, smbbuf2, smblen2); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER, smbbuf3, smblen3); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER, smbbuf4, smblen4); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result = 1; end: @@ -2156,11 +2183,14 @@ int SMBParserTest07(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOCLIENT | STREAM_START, smbbuf1, smblen1); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -2222,11 +2252,14 @@ int SMBParserTest08(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOCLIENT | STREAM_START, smbbuf1, smblen1); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -2250,11 +2283,14 @@ int SMBParserTest08(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOCLIENT, smbbuf2, smblen2); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smb_state->smb.command != SMB_COM_NEGOTIATE) { printf("we should expect SMB command 0x%02x , got 0x%02x : ", @@ -2325,11 +2361,14 @@ int SMBParserTest09(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER | STREAM_START, smbbuf1, smblen1); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -2353,11 +2392,14 @@ int SMBParserTest09(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER, smbbuf2, smblen2); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smb_state->smb.command != SMB_COM_NEGOTIATE) { printf("we should expect SMB command 0x%02x , got 0x%02x : ", @@ -2437,11 +2479,14 @@ int SMBParserTest10(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOSERVER | STREAM_START, smbbuf1, smblen1); if (r != 0) { printf("smb header check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMBState *smb_state = f.alstate; if (smb_state == NULL) { @@ -2454,11 +2499,14 @@ int SMBParserTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SMB, STREAM_TOCLIENT, smbbuf2, smblen2); if (r == 0) { printf("smb parser didn't return fail\n"); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); result = 1; end: diff --git a/src/app-layer-smb2.c b/src/app-layer-smb2.c index 866caca5fe..1918587632 100644 --- a/src/app-layer-smb2.c +++ b/src/app-layer-smb2.c @@ -550,12 +550,15 @@ int SMB2ParserTest01(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SMB2, STREAM_TOSERVER|STREAM_EOF, smb2buf, smb2len); if (r != 0) { printf("smb2 header check returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMB2State *smb2_state = f.alstate; if (smb2_state == NULL) { diff --git a/src/app-layer-smtp.c b/src/app-layer-smtp.c index f58bbc4bda..94109ab1ba 100644 --- a/src/app-layer-smtp.c +++ b/src/app-layer-smtp.c @@ -954,12 +954,15 @@ int SMTPParserTest01(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -974,12 +977,15 @@ int SMTPParserTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, welcome_reply, welcome_reply_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -989,12 +995,15 @@ int SMTPParserTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply1, reply1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1003,12 +1012,15 @@ int SMTPParserTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1018,12 +1030,15 @@ int SMTPParserTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply2, reply2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1296,12 +1311,15 @@ int SMTPParserTest02(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -1316,12 +1334,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, welcome_reply, welcome_reply_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1331,12 +1352,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply1, reply1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1345,12 +1369,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1360,12 +1387,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply2, reply2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1374,12 +1404,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request3, request3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1389,12 +1422,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply3, reply3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1403,12 +1439,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request4, request4_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1418,12 +1457,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply4, reply4_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1433,12 +1475,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request5_1, request5_1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1449,12 +1494,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request5_2, request5_2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1465,12 +1513,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request5_3, request5_3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1481,12 +1532,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request5_4, request5_4_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1497,12 +1551,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request5_5, request5_5_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1512,12 +1569,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply5, reply5_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1526,12 +1586,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request6, request6_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1541,12 +1604,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply6, reply6_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1555,12 +1621,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request7, request7_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1570,12 +1639,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply7, reply7_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1584,12 +1656,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request8, request8_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1599,12 +1674,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply8, reply8_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1614,12 +1692,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request9_1, request9_1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1630,12 +1711,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request9_2, request9_2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1646,12 +1730,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request9_3, request9_3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1662,12 +1749,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request9_4, request9_4_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1678,12 +1768,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request9_5, request9_5_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1693,12 +1786,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply9, reply9_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1707,12 +1803,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request10, request10_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1722,12 +1821,15 @@ int SMTPParserTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply10, reply10_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1842,12 +1944,15 @@ int SMTPParserTest03(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -1862,12 +1967,15 @@ int SMTPParserTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, welcome_reply, welcome_reply_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -1877,12 +1985,15 @@ int SMTPParserTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply1, reply1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1891,12 +2002,15 @@ int SMTPParserTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 3 || smtp_state->cmds_idx != 0 || @@ -1908,12 +2022,15 @@ int SMTPParserTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply2, reply2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -1973,12 +2090,15 @@ int SMTPParserTest04(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -1993,12 +2113,15 @@ int SMTPParserTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, welcome_reply, welcome_reply_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2113,12 +2236,15 @@ int SMTPParserTest05(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -2133,12 +2259,15 @@ int SMTPParserTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, welcome_reply, welcome_reply_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2148,12 +2277,15 @@ int SMTPParserTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply1, reply1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -2162,12 +2294,15 @@ int SMTPParserTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2177,12 +2312,15 @@ int SMTPParserTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply2, reply2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -2198,12 +2336,15 @@ int SMTPParserTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request3, request3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2213,12 +2354,15 @@ int SMTPParserTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply3, reply3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -2387,12 +2531,15 @@ int SMTPParserTest06(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -2407,12 +2554,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, welcome_reply, welcome_reply_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2422,12 +2572,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply1, reply1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -2436,12 +2589,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2451,12 +2607,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply2, reply2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -2465,12 +2624,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request3, request3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2480,12 +2642,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply3, reply3_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 0 || smtp_state->cmds_idx != 0 || @@ -2494,12 +2659,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request4, request4_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2512,12 +2680,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request5, request5_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2529,12 +2700,15 @@ int SMTPParserTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request6, request6_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->input_len != 0 || smtp_state->cmds_cnt != 1 || smtp_state->cmds_idx != 0 || @@ -2594,12 +2768,15 @@ int SMTPParserTest07(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_1, request1_1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -2615,12 +2792,15 @@ int SMTPParserTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_2, request1_2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 1 || smtp_state->ts_db == NULL || smtp_state->ts_db_len != (int32_t)strlen(request1_str) || @@ -2631,12 +2811,15 @@ int SMTPParserTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 0 || smtp_state->ts_db != NULL || smtp_state->ts_db_len != 0 || @@ -2696,12 +2879,15 @@ int SMTPParserTest08(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_1, request1_1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -2717,12 +2903,15 @@ int SMTPParserTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_2, request1_2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 1 || smtp_state->ts_db == NULL || smtp_state->ts_db_len != (int32_t)strlen(request1_str) || @@ -2733,12 +2922,15 @@ int SMTPParserTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 0 || smtp_state->ts_db != NULL || smtp_state->ts_db_len != 0 || @@ -2798,12 +2990,15 @@ int SMTPParserTest09(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_1, request1_1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -2819,12 +3014,15 @@ int SMTPParserTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_2, request1_2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 1 || smtp_state->ts_db == NULL || smtp_state->ts_db_len != (int32_t)strlen(request1_str) || @@ -2835,12 +3033,15 @@ int SMTPParserTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 0 || smtp_state->ts_db != NULL || smtp_state->ts_db_len != 0 || @@ -2900,12 +3101,15 @@ int SMTPParserTest10(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_1, request1_1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -2921,12 +3125,15 @@ int SMTPParserTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1_2, request1_2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 1 || smtp_state->ts_db == NULL || smtp_state->ts_db_len != (int32_t)strlen(request1_str) || @@ -2937,12 +3144,15 @@ int SMTPParserTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 0 || smtp_state->ts_db != NULL || smtp_state->ts_db_len != 0 || @@ -2996,12 +3206,15 @@ int SMTPParserTest11(void) StreamTcpInitConfig(TRUE); void *thread_local_data = SMTPLocalStorageAlloc(); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SMTPState *smtp_state = f.alstate; if (smtp_state == NULL) { printf("no smtp state: "); @@ -3017,12 +3230,15 @@ int SMTPParserTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("smtp check returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (smtp_state->ts_current_line_db != 0 || smtp_state->ts_db != NULL || smtp_state->ts_db_len != 0 || @@ -3101,12 +3317,15 @@ int SMTPParserTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER | STREAM_START, request1, request1_len); if (r != 0) { printf("AppLayerParse for smtp failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); smtp_state = f.alstate; if (smtp_state == NULL) { @@ -3122,12 +3341,15 @@ int SMTPParserTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT | STREAM_TOCLIENT, reply1, reply1_len); if (r == 0) { printf("AppLayerParse for smtp failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3232,12 +3454,15 @@ int SMTPParserTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER | STREAM_START, request1, request1_len); if (r != 0) { printf("AppLayerParse for smtp failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); smtp_state = f.alstate; if (smtp_state == NULL) { @@ -3253,12 +3478,15 @@ int SMTPParserTest13(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOCLIENT, reply1, reply1_len); if (r != 0) { printf("AppLayerParse for smtp failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3268,12 +3496,15 @@ int SMTPParserTest13(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(thread_local_data, &f, ALPROTO_SMTP, STREAM_TOSERVER, request2, request2_len); if (r != 0) { printf("AppLayerParse for smtp failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); diff --git a/src/app-layer-ssh.c b/src/app-layer-ssh.c index 9c69fd20f1..697f0f1b04 100644 --- a/src/app-layer-ssh.c +++ b/src/app-layer-ssh.c @@ -769,12 +769,15 @@ static int SSHParserTest01(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER|STREAM_EOF, sshbuf, sshlen); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -836,12 +839,15 @@ static int SSHParserTest02(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER|STREAM_EOF, sshbuf, sshlen); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -903,12 +909,15 @@ static int SSHParserTest03(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER|STREAM_EOF, sshbuf, sshlen); if (r == 0) { printf("toclient chunk 1 returned %" PRId32 ", expected != 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* Ok, it returned an error. Let's make sure we didn't parse the string at all */ SshState *ssh_state = f.alstate; @@ -955,12 +964,15 @@ static int SSHParserTest04(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT|STREAM_EOF, sshbuf, sshlen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1022,12 +1034,15 @@ static int SSHParserTest05(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT|STREAM_EOF, sshbuf, sshlen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1089,12 +1104,15 @@ static int SSHParserTest06(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT|STREAM_EOF, sshbuf, sshlen); if (r == 0) { printf("toserver chunk 1 returned %" PRId32 ", expected != 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* Ok, it returned an error. Let's make sure we didn't parse the string at all */ SshState *ssh_state = f.alstate; @@ -1142,17 +1160,23 @@ static int SSHParserTest07(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1210,23 +1234,32 @@ static int SSHParserTest08(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1280,17 +1313,23 @@ static int SSHParserTest09(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1348,23 +1387,32 @@ static int SSHParserTest10(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1421,23 +1469,32 @@ static int SSHParserTest11(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1501,29 +1558,41 @@ static int SSHParserTest12(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1585,23 +1654,32 @@ static int SSHParserTest13(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -1665,29 +1743,41 @@ static int SSHParserTest14(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOCLIENT, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { diff --git a/src/app-layer-ssl.c b/src/app-layer-ssl.c index 2eaa39f57c..74bc993b3b 100644 --- a/src/app-layer-ssl.c +++ b/src/app-layer-ssl.c @@ -1021,12 +1021,15 @@ static int SSLParserTest01(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER | STREAM_EOF, tlsbuf, tlslen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1070,19 +1073,25 @@ static int SSLParserTest02(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf2, tlslen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1128,26 +1137,35 @@ static int SSLParserTest03(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf2, tlslen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf3, tlslen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1195,33 +1213,45 @@ static int SSLParserTest04(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf2, tlslen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf3, tlslen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf4, tlslen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1515,12 +1545,15 @@ static int SSLParserMultimsgTest01(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1589,12 +1622,15 @@ static int SSLParserMultimsgTest02(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOCLIENT, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1652,12 +1688,15 @@ static int SSLParserTest07(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf, tlslen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1827,19 +1866,25 @@ static int SSLParserTest09(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1905,19 +1950,25 @@ static int SSLParserTest10(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -1982,19 +2033,25 @@ static int SSLParserTest11(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -2064,26 +2121,35 @@ static int SSLParserTest12(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf3, buf3_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -2158,33 +2224,45 @@ static int SSLParserTest13(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf3, buf3_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf4, buf4_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -2238,19 +2316,25 @@ static int SSLParserTest14(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -2285,12 +2369,15 @@ static int SSLParserTest15(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r == 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); end: StreamTcpFreeConfig(TRUE); @@ -2318,12 +2405,15 @@ static int SSLParserTest16(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r == 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); end: StreamTcpFreeConfig(TRUE); @@ -2351,12 +2441,15 @@ static int SSLParserTest17(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r == 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); end: StreamTcpFreeConfig(TRUE); @@ -2390,19 +2483,25 @@ static int SSLParserTest18(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -2438,12 +2537,15 @@ static int SSLParserTest19(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -2479,12 +2581,15 @@ static int SSLParserTest20(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r == 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); end: StreamTcpFreeConfig(TRUE); @@ -2514,12 +2619,15 @@ static int SSLParserTest21(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER | STREAM_EOF, buf, buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *app_state = f.alstate; if (app_state == NULL) { @@ -2573,13 +2681,16 @@ static int SSLParserTest22(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOCLIENT | STREAM_EOF, buf, buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *app_state = f.alstate; if (app_state == NULL) { @@ -2870,13 +2981,16 @@ static int SSLParserTest23(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER | STREAM_START, chello_buf, chello_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *app_state = f.alstate; if (app_state == NULL) { @@ -2908,13 +3022,16 @@ static int SSLParserTest23(void) } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOCLIENT, shello_buf, shello_buf_len); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (app_state->server_connp.content_type != SSLV3_HANDSHAKE_PROTOCOL) { printf("expected content_type %" PRIu8 ", got %" PRIu8 ": ", @@ -2938,13 +3055,16 @@ static int SSLParserTest23(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, client_change_cipher_spec_buf, client_change_cipher_spec_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* with multiple records the client content type hold the type from the last * record */ @@ -2972,13 +3092,16 @@ static int SSLParserTest23(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOCLIENT, server_change_cipher_spec_buf, server_change_cipher_spec_buf_len); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* with multiple records the serve content type hold the type from the last * record */ @@ -3007,13 +3130,16 @@ static int SSLParserTest23(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, toserver_app_data_buf, toserver_app_data_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); if (app_state->client_connp.content_type != SSLV3_APPLICATION_PROTOCOL) { printf("expected content_type %" PRIu8 ", got %" PRIu8 ": ", @@ -3101,19 +3227,25 @@ static int SSLParserTest24(void) StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf1, buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, buf2, buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { diff --git a/src/detect-dce-iface.c b/src/detect-dce-iface.c index 7fda75de17..85d3ba2000 100644 --- a/src/detect-dce-iface.c +++ b/src/detect-dce-iface.c @@ -923,12 +923,15 @@ static int DetectDceIfaceTestParse12(void) SCLogDebug("handling to_server chunk"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_bind, dcerpc_bind_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -946,12 +949,15 @@ static int DetectDceIfaceTestParse12(void) SCLogDebug("handling to_client chunk"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_bindack, dcerpc_bindack_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -961,12 +967,15 @@ static int DetectDceIfaceTestParse12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_request, dcerpc_request_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1411,12 +1420,15 @@ static int DetectDceIfaceTestParse14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_bind, dcerpc_bind_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -1430,12 +1442,15 @@ static int DetectDceIfaceTestParse14(void) if (PacketAlertCheck(p, 1)) goto end; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_bindack, dcerpc_bindack_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1445,12 +1460,15 @@ static int DetectDceIfaceTestParse14(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_request, dcerpc_request_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1607,12 +1625,15 @@ static int DetectDceIfaceTestParse15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_bind, dcerpc_bind_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -1628,12 +1649,15 @@ static int DetectDceIfaceTestParse15(void) if (PacketAlertCheck(p, 2)) goto end; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_bindack, dcerpc_bindack_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1647,12 +1671,15 @@ static int DetectDceIfaceTestParse15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_alter_context, dcerpc_alter_context_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1666,12 +1693,15 @@ static int DetectDceIfaceTestParse15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_alter_context_resp, dcerpc_alter_context_resp_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1685,12 +1715,15 @@ static int DetectDceIfaceTestParse15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_request1, dcerpc_request1_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1704,12 +1737,15 @@ static int DetectDceIfaceTestParse15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_response1, dcerpc_response1_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1723,12 +1759,15 @@ static int DetectDceIfaceTestParse15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_request2, dcerpc_request2_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); diff --git a/src/detect-dce-opnum.c b/src/detect-dce-opnum.c index 459c96b28a..7530a0f682 100644 --- a/src/detect-dce-opnum.c +++ b/src/detect-dce-opnum.c @@ -1172,12 +1172,15 @@ static int DetectDceOpnumTestParse08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_bind, dcerpc_bind_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -1185,19 +1188,25 @@ static int DetectDceOpnumTestParse08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_bindack, dcerpc_bindack_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_EOF, dcerpc_request, dcerpc_request_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -1697,12 +1706,15 @@ static int DetectDceOpnumTestParse09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_request, dcerpc_request_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { diff --git a/src/detect-dce-stub-data.c b/src/detect-dce-stub-data.c index 72bf35af69..599b3f1f39 100644 --- a/src/detect-dce-stub-data.c +++ b/src/detect-dce-stub-data.c @@ -618,12 +618,15 @@ static int DetectDceStubDataTestParse02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_bind, dcerpc_bind_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -641,12 +644,15 @@ static int DetectDceStubDataTestParse02(void) goto end; /* do detect */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_bindack, dcerpc_bindack_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; @@ -657,12 +663,15 @@ static int DetectDceStubDataTestParse02(void) if (PacketAlertCheck(p, 1)) goto end; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_EOF, dcerpc_request, dcerpc_request_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOCLIENT; p->flowflags |= FLOW_PKT_TOSERVER; @@ -1159,12 +1168,15 @@ static int DetectDceStubDataTestParse03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_request, dcerpc_request_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -1358,12 +1370,15 @@ static int DetectDceStubDataTestParse04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_bind, dcerpc_bind_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOCLIENT; p->flowflags |= FLOW_PKT_TOSERVER; SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1374,23 +1389,29 @@ static int DetectDceStubDataTestParse04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_bindack, dcerpc_bindack_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; SigMatchSignatures(&th_v, de_ctx, det_ctx, p); /* request1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_request1, dcerpc_request1_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOCLIENT; p->flowflags |= FLOW_PKT_TOSERVER; @@ -1401,12 +1422,15 @@ static int DetectDceStubDataTestParse04(void) goto end; /* response1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_response1, dcerpc_response1_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; @@ -1417,12 +1441,15 @@ static int DetectDceStubDataTestParse04(void) goto end; /* request2 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_request2, dcerpc_request2_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOCLIENT; p->flowflags |= FLOW_PKT_TOSERVER; @@ -1433,12 +1460,15 @@ static int DetectDceStubDataTestParse04(void) goto end; /* response2 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_response2, dcerpc_response2_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; @@ -1449,12 +1479,15 @@ static int DetectDceStubDataTestParse04(void) goto end; /* request3 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_request3, dcerpc_request3_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOCLIENT; p->flowflags |= FLOW_PKT_TOSERVER; @@ -1465,12 +1498,15 @@ static int DetectDceStubDataTestParse04(void) goto end; /* response3 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT | STREAM_EOF, dcerpc_response3, dcerpc_response3_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; @@ -1641,12 +1677,15 @@ static int DetectDceStubDataTestParse05(void) DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); /* request1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER | STREAM_START, dcerpc_request1, dcerpc_request1_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dcerpc_state = f.alstate; if (dcerpc_state == NULL) { @@ -1663,12 +1702,15 @@ static int DetectDceStubDataTestParse05(void) goto end; /* response1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_response1, dcerpc_response1_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; @@ -1679,12 +1721,15 @@ static int DetectDceStubDataTestParse05(void) goto end; /* request2 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_request2, dcerpc_request2_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOCLIENT; p->flowflags |= FLOW_PKT_TOSERVER; @@ -1695,12 +1740,15 @@ static int DetectDceStubDataTestParse05(void) goto end; /* response2 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT, dcerpc_response2, dcerpc_response2_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; @@ -1711,12 +1759,15 @@ static int DetectDceStubDataTestParse05(void) goto end; /* request3 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, dcerpc_request3, dcerpc_request3_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOCLIENT; p->flowflags |= FLOW_PKT_TOSERVER; @@ -1727,12 +1778,15 @@ static int DetectDceStubDataTestParse05(void) goto end; /* response3 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOCLIENT | STREAM_EOF, dcerpc_response3, dcerpc_response3_len); if (r != 0) { SCLogDebug("AppLayerParse for dcerpc failed. Returned %" PRId32, r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p->flowflags &=~ FLOW_PKT_TOSERVER; p->flowflags |= FLOW_PKT_TOCLIENT; diff --git a/src/detect-dns-query.c b/src/detect-dns-query.c index 2ecc23547f..edaddec5af 100644 --- a/src/detect-dns-query.c +++ b/src/detect-dns-query.c @@ -176,11 +176,14 @@ static int DetectDnsQueryTest01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOSERVER, buf, sizeof(buf)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dns_state = f.alstate; if (dns_state == NULL) { @@ -300,11 +303,14 @@ static int DetectDnsQueryTest02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOSERVER, buf1, sizeof(buf1)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dns_state = f.alstate; if (dns_state == NULL) { @@ -324,11 +330,14 @@ static int DetectDnsQueryTest02(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOCLIENT, buf2, sizeof(buf2)); if (r != 0) { printf("toserver client 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p2); @@ -342,11 +351,14 @@ static int DetectDnsQueryTest02(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOSERVER, buf3, sizeof(buf3)); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p3); @@ -430,11 +442,14 @@ static int DetectDnsQueryTest03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DNS_TCP, STREAM_TOSERVER, buf, sizeof(buf)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dns_state = f.alstate; if (dns_state == NULL) { @@ -524,11 +539,14 @@ static int DetectDnsQueryTest04(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DNS_TCP, STREAM_TOSERVER, buf1, sizeof(buf1)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dns_state = f.alstate; if (dns_state == NULL) { @@ -544,11 +562,14 @@ static int DetectDnsQueryTest04(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_TCP, STREAM_TOSERVER, buf2, sizeof(buf2)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p2); @@ -675,11 +696,14 @@ static int DetectDnsQueryTest05(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DNS_TCP, STREAM_TOSERVER, buf1, sizeof(buf1)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dns_state = f.alstate; if (dns_state == NULL) { @@ -699,11 +723,14 @@ static int DetectDnsQueryTest05(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_TCP, STREAM_TOSERVER, buf2, sizeof(buf2)); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p2); @@ -717,11 +744,14 @@ static int DetectDnsQueryTest05(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_TCP, STREAM_TOCLIENT, buf3, sizeof(buf3)); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p3); @@ -735,11 +765,14 @@ static int DetectDnsQueryTest05(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_TCP, STREAM_TOSERVER, buf4, sizeof(buf4)); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p4); @@ -828,11 +861,14 @@ static int DetectDnsQueryTest06(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOSERVER, buf, sizeof(buf)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dns_state = f.alstate; if (dns_state == NULL) { @@ -963,11 +999,14 @@ static int DetectDnsQueryTest07(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOSERVER, buf1, sizeof(buf1)); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); dns_state = f.alstate; if (dns_state == NULL) { @@ -987,11 +1026,14 @@ static int DetectDnsQueryTest07(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOCLIENT, buf2, sizeof(buf2)); if (r != -1) { printf("toserver client 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p2); @@ -1009,11 +1051,14 @@ static int DetectDnsQueryTest07(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DNS_UDP, STREAM_TOSERVER, buf3, sizeof(buf3)); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p3); diff --git a/src/detect-engine-dcepayload.c b/src/detect-engine-dcepayload.c index 83767e6e24..6548b1aebb 100644 --- a/src/detect-engine-dcepayload.c +++ b/src/detect-engine-dcepayload.c @@ -6478,12 +6478,15 @@ int DcePayloadTest15(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -6587,12 +6590,15 @@ int DcePayloadTest16(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -6696,12 +6702,15 @@ int DcePayloadTest17(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -6805,12 +6814,15 @@ int DcePayloadTest18(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -6914,12 +6926,15 @@ int DcePayloadTest19(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -7023,12 +7038,15 @@ int DcePayloadTest20(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -7121,12 +7139,15 @@ int DcePayloadTest21(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -7215,12 +7236,15 @@ int DcePayloadTest22(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -7310,12 +7334,15 @@ int DcePayloadTest23(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -9519,12 +9546,15 @@ int DcePayloadTest42(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if ((PacketAlertCheck(p, 1))) { @@ -9614,12 +9644,15 @@ int DcePayloadTest43(void) DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); /* request 1 */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_DCERPC, STREAM_TOSERVER, request1, request1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* detection phase */ SigMatchSignatures(&tv, de_ctx, det_ctx, p); if ( !(PacketAlertCheck(p, 1))) { diff --git a/src/detect-engine-hcbd.c b/src/detect-engine-hcbd.c index 8b3f118b1a..532b5cb2ef 100644 --- a/src/detect-engine-hcbd.c +++ b/src/detect-engine-hcbd.c @@ -371,12 +371,15 @@ static int DetectEngineHttpClientBodyTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -393,12 +396,15 @@ static int DetectEngineHttpClientBodyTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -485,12 +491,15 @@ static int DetectEngineHttpClientBodyTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -587,12 +596,15 @@ static int DetectEngineHttpClientBodyTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -609,12 +621,15 @@ static int DetectEngineHttpClientBodyTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -704,12 +719,15 @@ static int DetectEngineHttpClientBodyTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -726,12 +744,15 @@ static int DetectEngineHttpClientBodyTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -820,12 +841,15 @@ static int DetectEngineHttpClientBodyTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -842,12 +866,15 @@ static int DetectEngineHttpClientBodyTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -936,12 +963,15 @@ static int DetectEngineHttpClientBodyTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -958,12 +988,15 @@ static int DetectEngineHttpClientBodyTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1052,11 +1085,14 @@ static int DetectEngineHttpClientBodyTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1072,11 +1108,14 @@ static int DetectEngineHttpClientBodyTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1165,12 +1204,15 @@ static int DetectEngineHttpClientBodyTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1187,12 +1229,15 @@ static int DetectEngineHttpClientBodyTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1282,12 +1327,15 @@ static int DetectEngineHttpClientBodyTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1304,12 +1352,15 @@ static int DetectEngineHttpClientBodyTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1399,12 +1450,15 @@ static int DetectEngineHttpClientBodyTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1421,12 +1475,15 @@ static int DetectEngineHttpClientBodyTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1516,12 +1573,15 @@ static int DetectEngineHttpClientBodyTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1538,12 +1598,15 @@ static int DetectEngineHttpClientBodyTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1633,12 +1696,15 @@ static int DetectEngineHttpClientBodyTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1655,12 +1721,15 @@ static int DetectEngineHttpClientBodyTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1750,12 +1819,15 @@ static int DetectEngineHttpClientBodyTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1772,12 +1844,15 @@ static int DetectEngineHttpClientBodyTest13(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1867,12 +1942,15 @@ static int DetectEngineHttpClientBodyTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1889,12 +1967,15 @@ static int DetectEngineHttpClientBodyTest14(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1984,12 +2065,15 @@ static int DetectEngineHttpClientBodyTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2006,12 +2090,15 @@ static int DetectEngineHttpClientBodyTest15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2101,12 +2188,15 @@ static int DetectEngineHttpClientBodyTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2123,12 +2213,15 @@ static int DetectEngineHttpClientBodyTest16(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2502,12 +2595,15 @@ static int DetectEngineHttpClientBodyTest21(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2524,12 +2620,15 @@ static int DetectEngineHttpClientBodyTest21(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2619,12 +2718,15 @@ static int DetectEngineHttpClientBodyTest22(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2641,12 +2743,15 @@ static int DetectEngineHttpClientBodyTest22(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2736,12 +2841,15 @@ static int DetectEngineHttpClientBodyTest23(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2758,12 +2866,15 @@ static int DetectEngineHttpClientBodyTest23(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2853,12 +2964,15 @@ static int DetectEngineHttpClientBodyTest24(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2875,12 +2989,15 @@ static int DetectEngineHttpClientBodyTest24(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2970,12 +3087,15 @@ static int DetectEngineHttpClientBodyTest25(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2992,12 +3112,15 @@ static int DetectEngineHttpClientBodyTest25(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3087,12 +3210,15 @@ static int DetectEngineHttpClientBodyTest26(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3109,12 +3235,15 @@ static int DetectEngineHttpClientBodyTest26(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3204,12 +3333,15 @@ static int DetectEngineHttpClientBodyTest27(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3226,12 +3358,15 @@ static int DetectEngineHttpClientBodyTest27(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3321,12 +3456,15 @@ static int DetectEngineHttpClientBodyTest28(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3343,12 +3481,15 @@ static int DetectEngineHttpClientBodyTest28(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3424,11 +3565,14 @@ static int DetectEngineHttpClientBodyTest29(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); uint8_t response_buf[] = "HTTP/1.0 200 ok\r\n" "Content-Type: text/html\r\n" @@ -3436,13 +3580,16 @@ static int DetectEngineHttpClientBodyTest29(void) "\r\n" "dummy"; uint32_t response_buf_len = strlen((char *)response_buf); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, response_buf, response_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); p = UTHBuildPacket(NULL, 0, IPPROTO_TCP); p->flow = &f; @@ -3554,12 +3701,15 @@ libhtp:\n\ SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3576,12 +3726,15 @@ libhtp:\n\ goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3696,12 +3849,15 @@ libhtp:\n\ SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3718,12 +3874,15 @@ libhtp:\n\ goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-engine-hcd.c b/src/detect-engine-hcd.c index 1666b233c2..d1308a06ff 100644 --- a/src/detect-engine-hcd.c +++ b/src/detect-engine-hcd.c @@ -206,12 +206,15 @@ static int DetectEngineHttpCookieTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -297,12 +300,15 @@ static int DetectEngineHttpCookieTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -388,12 +394,15 @@ static int DetectEngineHttpCookieTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -479,12 +488,15 @@ static int DetectEngineHttpCookieTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -570,12 +582,15 @@ static int DetectEngineHttpCookieTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -661,12 +676,15 @@ static int DetectEngineHttpCookieTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -752,12 +770,15 @@ static int DetectEngineHttpCookieTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -843,12 +864,15 @@ static int DetectEngineHttpCookieTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -934,12 +958,15 @@ static int DetectEngineHttpCookieTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1026,12 +1053,15 @@ static int DetectEngineHttpCookieTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1118,12 +1148,15 @@ static int DetectEngineHttpCookieTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1210,12 +1243,15 @@ static int DetectEngineHttpCookieTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1302,12 +1338,15 @@ static int DetectEngineHttpCookieTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1394,12 +1433,15 @@ static int DetectEngineHttpCookieTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1486,12 +1528,15 @@ static int DetectEngineHttpCookieTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1578,12 +1623,15 @@ static int DetectEngineHttpCookieTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1670,12 +1718,15 @@ static int DetectEngineHttpCookieTest17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-engine-hhd.c b/src/detect-engine-hhd.c index d33c53ceb7..777874d6da 100644 --- a/src/detect-engine-hhd.c +++ b/src/detect-engine-hhd.c @@ -316,12 +316,15 @@ static int DetectEngineHttpHeaderTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -405,12 +408,15 @@ static int DetectEngineHttpHeaderTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -494,12 +500,15 @@ static int DetectEngineHttpHeaderTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -583,12 +592,15 @@ static int DetectEngineHttpHeaderTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -672,12 +684,15 @@ static int DetectEngineHttpHeaderTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -761,12 +776,15 @@ static int DetectEngineHttpHeaderTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -850,12 +868,15 @@ static int DetectEngineHttpHeaderTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -939,12 +960,15 @@ static int DetectEngineHttpHeaderTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1028,12 +1052,15 @@ static int DetectEngineHttpHeaderTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1117,12 +1144,15 @@ static int DetectEngineHttpHeaderTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1206,12 +1236,15 @@ static int DetectEngineHttpHeaderTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1295,12 +1328,15 @@ static int DetectEngineHttpHeaderTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1384,12 +1420,15 @@ static int DetectEngineHttpHeaderTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1473,12 +1512,15 @@ static int DetectEngineHttpHeaderTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1562,12 +1604,15 @@ static int DetectEngineHttpHeaderTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1651,12 +1696,15 @@ static int DetectEngineHttpHeaderTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1740,12 +1788,15 @@ static int DetectEngineHttpHeaderTest17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1985,12 +2036,15 @@ static int DetectEngineHttpHeaderTest20(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2007,12 +2061,15 @@ static int DetectEngineHttpHeaderTest20(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2099,12 +2156,15 @@ static int DetectEngineHttpHeaderTest21(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2121,12 +2181,15 @@ static int DetectEngineHttpHeaderTest21(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2213,12 +2276,15 @@ static int DetectEngineHttpHeaderTest22(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2235,12 +2301,15 @@ static int DetectEngineHttpHeaderTest22(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2327,12 +2396,15 @@ static int DetectEngineHttpHeaderTest23(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2349,12 +2421,15 @@ static int DetectEngineHttpHeaderTest23(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2441,12 +2516,15 @@ static int DetectEngineHttpHeaderTest24(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2463,12 +2541,15 @@ static int DetectEngineHttpHeaderTest24(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2555,12 +2636,15 @@ static int DetectEngineHttpHeaderTest25(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2577,12 +2661,15 @@ static int DetectEngineHttpHeaderTest25(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2669,12 +2756,15 @@ static int DetectEngineHttpHeaderTest26(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2691,12 +2781,15 @@ static int DetectEngineHttpHeaderTest26(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2783,12 +2876,15 @@ static int DetectEngineHttpHeaderTest27(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2805,12 +2901,15 @@ static int DetectEngineHttpHeaderTest27(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2901,13 +3000,16 @@ static int DetectEngineHttpHeaderTest28(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2924,12 +3026,15 @@ static int DetectEngineHttpHeaderTest28(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3020,13 +3125,16 @@ static int DetectEngineHttpHeaderTest29(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3043,12 +3151,15 @@ static int DetectEngineHttpHeaderTest29(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3172,13 +3283,16 @@ static int DetectEngineHttpHeaderTest30(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3195,12 +3309,15 @@ static int DetectEngineHttpHeaderTest30(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3284,12 +3401,15 @@ static int DetectEngineHttpHeaderTest31(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3380,12 +3500,15 @@ static int DetectEngineHttpHeaderTest32(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3484,12 +3607,15 @@ static int DetectEngineHttpHeaderTest33(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3506,12 +3632,15 @@ static int DetectEngineHttpHeaderTest33(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-engine-hhhd.c b/src/detect-engine-hhhd.c index 2a338ba487..17c28b808e 100644 --- a/src/detect-engine-hhhd.c +++ b/src/detect-engine-hhhd.c @@ -179,12 +179,15 @@ static int DetectEngineHttpHHTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -270,12 +273,15 @@ static int DetectEngineHttpHHTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -361,12 +367,15 @@ static int DetectEngineHttpHHTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -452,12 +461,15 @@ static int DetectEngineHttpHHTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -543,12 +555,15 @@ static int DetectEngineHttpHHTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -634,12 +649,15 @@ static int DetectEngineHttpHHTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -725,12 +743,15 @@ static int DetectEngineHttpHHTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -816,12 +837,15 @@ static int DetectEngineHttpHHTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -907,12 +931,15 @@ static int DetectEngineHttpHHTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -999,12 +1026,15 @@ static int DetectEngineHttpHHTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1091,12 +1121,15 @@ static int DetectEngineHttpHHTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1183,12 +1216,15 @@ static int DetectEngineHttpHHTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1275,12 +1311,15 @@ static int DetectEngineHttpHHTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1367,12 +1406,15 @@ static int DetectEngineHttpHHTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1459,12 +1501,15 @@ static int DetectEngineHttpHHTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1551,12 +1596,15 @@ static int DetectEngineHttpHHTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1643,12 +1691,15 @@ static int DetectEngineHttpHHTest17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1730,12 +1781,15 @@ static int DetectEngineHttpHHTest18(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1817,12 +1871,15 @@ static int DetectEngineHttpHHTest19(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1904,12 +1961,15 @@ static int DetectEngineHttpHHTest20(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1990,12 +2050,15 @@ static int DetectEngineHttpHHTest21(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2076,12 +2139,15 @@ static int DetectEngineHttpHHTest22(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2162,12 +2228,15 @@ static int DetectEngineHttpHHTest23(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2249,12 +2318,15 @@ static int DetectEngineHttpHHTest24(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2336,12 +2408,15 @@ static int DetectEngineHttpHHTest25(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-engine-hmd.c b/src/detect-engine-hmd.c index 593e429a4f..1647436317 100644 --- a/src/detect-engine-hmd.c +++ b/src/detect-engine-hmd.c @@ -171,12 +171,15 @@ static int DetectEngineHttpMethodTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -261,12 +264,15 @@ static int DetectEngineHttpMethodTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -351,12 +357,15 @@ static int DetectEngineHttpMethodTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -441,12 +450,15 @@ static int DetectEngineHttpMethodTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -531,12 +543,15 @@ static int DetectEngineHttpMethodTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -621,12 +636,15 @@ static int DetectEngineHttpMethodTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -711,12 +729,15 @@ static int DetectEngineHttpMethodTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -801,12 +822,15 @@ static int DetectEngineHttpMethodTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -891,12 +915,15 @@ static int DetectEngineHttpMethodTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -982,12 +1009,15 @@ static int DetectEngineHttpMethodTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1073,12 +1103,15 @@ static int DetectEngineHttpMethodTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1164,12 +1197,15 @@ static int DetectEngineHttpMethodTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1255,12 +1291,15 @@ static int DetectEngineHttpMethodTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1346,12 +1385,15 @@ static int DetectEngineHttpMethodTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1437,12 +1479,15 @@ static int DetectEngineHttpMethodTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1528,12 +1573,15 @@ static int DetectEngineHttpMethodTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1619,12 +1667,15 @@ static int DetectEngineHttpMethodTest17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-engine-hrhd.c b/src/detect-engine-hrhd.c index 4266fd6f2f..477c85757e 100644 --- a/src/detect-engine-hrhd.c +++ b/src/detect-engine-hrhd.c @@ -217,12 +217,15 @@ static int DetectEngineHttpRawHeaderTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -306,12 +309,15 @@ static int DetectEngineHttpRawHeaderTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -395,12 +401,15 @@ static int DetectEngineHttpRawHeaderTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -484,12 +493,15 @@ static int DetectEngineHttpRawHeaderTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -573,12 +585,15 @@ static int DetectEngineHttpRawHeaderTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -662,12 +677,15 @@ static int DetectEngineHttpRawHeaderTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -751,12 +769,15 @@ static int DetectEngineHttpRawHeaderTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -840,12 +861,15 @@ static int DetectEngineHttpRawHeaderTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -929,12 +953,15 @@ static int DetectEngineHttpRawHeaderTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1018,12 +1045,15 @@ static int DetectEngineHttpRawHeaderTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1107,12 +1137,15 @@ static int DetectEngineHttpRawHeaderTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1196,12 +1229,15 @@ static int DetectEngineHttpRawHeaderTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1285,12 +1321,15 @@ static int DetectEngineHttpRawHeaderTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1374,12 +1413,15 @@ static int DetectEngineHttpRawHeaderTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1463,12 +1505,15 @@ static int DetectEngineHttpRawHeaderTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1552,12 +1597,15 @@ static int DetectEngineHttpRawHeaderTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1641,12 +1689,15 @@ static int DetectEngineHttpRawHeaderTest17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1886,12 +1937,15 @@ static int DetectEngineHttpRawHeaderTest20(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1908,12 +1962,15 @@ static int DetectEngineHttpRawHeaderTest20(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2000,12 +2057,15 @@ static int DetectEngineHttpRawHeaderTest21(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2022,12 +2082,15 @@ static int DetectEngineHttpRawHeaderTest21(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2114,12 +2177,15 @@ static int DetectEngineHttpRawHeaderTest22(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2136,12 +2202,15 @@ static int DetectEngineHttpRawHeaderTest22(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2228,12 +2297,15 @@ static int DetectEngineHttpRawHeaderTest23(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2250,12 +2322,15 @@ static int DetectEngineHttpRawHeaderTest23(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2342,12 +2417,15 @@ static int DetectEngineHttpRawHeaderTest24(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2364,12 +2442,15 @@ static int DetectEngineHttpRawHeaderTest24(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2456,12 +2537,15 @@ static int DetectEngineHttpRawHeaderTest25(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2478,12 +2562,15 @@ static int DetectEngineHttpRawHeaderTest25(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2570,12 +2657,15 @@ static int DetectEngineHttpRawHeaderTest26(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2592,12 +2682,15 @@ static int DetectEngineHttpRawHeaderTest26(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2684,12 +2777,15 @@ static int DetectEngineHttpRawHeaderTest27(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2706,12 +2802,15 @@ static int DetectEngineHttpRawHeaderTest27(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2802,13 +2901,16 @@ static int DetectEngineHttpRawHeaderTest28(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2825,12 +2927,15 @@ static int DetectEngineHttpRawHeaderTest28(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2921,13 +3026,16 @@ static int DetectEngineHttpRawHeaderTest29(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2944,12 +3052,15 @@ static int DetectEngineHttpRawHeaderTest29(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3067,12 +3178,15 @@ static int DetectEngineHttpRawHeaderTest31(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3172,12 +3286,15 @@ static int DetectEngineHttpRawHeaderTest32(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3194,12 +3311,15 @@ static int DetectEngineHttpRawHeaderTest32(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-engine-hrhhd.c b/src/detect-engine-hrhhd.c index a2563b6f24..31fb1306b4 100644 --- a/src/detect-engine-hrhhd.c +++ b/src/detect-engine-hrhhd.c @@ -206,12 +206,15 @@ static int DetectEngineHttpHRHTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -297,12 +300,15 @@ static int DetectEngineHttpHRHTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -388,12 +394,15 @@ static int DetectEngineHttpHRHTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -479,12 +488,15 @@ static int DetectEngineHttpHRHTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -570,12 +582,15 @@ static int DetectEngineHttpHRHTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -661,12 +676,15 @@ static int DetectEngineHttpHRHTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -752,12 +770,15 @@ static int DetectEngineHttpHRHTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -843,12 +864,15 @@ static int DetectEngineHttpHRHTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -934,12 +958,15 @@ static int DetectEngineHttpHRHTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1026,12 +1053,15 @@ static int DetectEngineHttpHRHTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1118,12 +1148,15 @@ static int DetectEngineHttpHRHTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1210,12 +1243,15 @@ static int DetectEngineHttpHRHTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1302,12 +1338,15 @@ static int DetectEngineHttpHRHTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1394,12 +1433,15 @@ static int DetectEngineHttpHRHTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1486,12 +1528,15 @@ static int DetectEngineHttpHRHTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1578,12 +1623,15 @@ static int DetectEngineHttpHRHTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1670,12 +1718,15 @@ static int DetectEngineHttpHRHTest17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1757,12 +1808,15 @@ static int DetectEngineHttpHRHTest18(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1844,12 +1898,15 @@ static int DetectEngineHttpHRHTest19(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1931,12 +1988,15 @@ static int DetectEngineHttpHRHTest20(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2017,12 +2077,15 @@ static int DetectEngineHttpHRHTest21(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2103,12 +2166,15 @@ static int DetectEngineHttpHRHTest22(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2189,12 +2255,15 @@ static int DetectEngineHttpHRHTest23(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2276,12 +2345,15 @@ static int DetectEngineHttpHRHTest24(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2363,12 +2435,15 @@ static int DetectEngineHttpHRHTest25(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-engine-hrud.c b/src/detect-engine-hrud.c index caf5ab77ec..1733fb4ea0 100644 --- a/src/detect-engine-hrud.c +++ b/src/detect-engine-hrud.c @@ -191,12 +191,15 @@ static int DetectEngineHttpRawUriTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -213,12 +216,15 @@ static int DetectEngineHttpRawUriTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -305,12 +311,15 @@ static int DetectEngineHttpRawUriTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -408,12 +417,15 @@ static int DetectEngineHttpRawUriTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -430,12 +442,15 @@ static int DetectEngineHttpRawUriTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -526,12 +541,15 @@ static int DetectEngineHttpRawUriTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -548,12 +566,15 @@ static int DetectEngineHttpRawUriTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -643,12 +664,15 @@ static int DetectEngineHttpRawUriTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -665,12 +689,15 @@ static int DetectEngineHttpRawUriTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -760,12 +787,15 @@ static int DetectEngineHttpRawUriTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -782,12 +812,15 @@ static int DetectEngineHttpRawUriTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -877,12 +910,15 @@ static int DetectEngineHttpRawUriTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -899,12 +935,15 @@ static int DetectEngineHttpRawUriTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -994,12 +1033,15 @@ static int DetectEngineHttpRawUriTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1016,12 +1058,15 @@ static int DetectEngineHttpRawUriTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1112,12 +1157,15 @@ static int DetectEngineHttpRawUriTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1134,12 +1182,15 @@ static int DetectEngineHttpRawUriTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1230,12 +1281,15 @@ static int DetectEngineHttpRawUriTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1252,12 +1306,15 @@ static int DetectEngineHttpRawUriTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1348,12 +1405,15 @@ static int DetectEngineHttpRawUriTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1370,12 +1430,15 @@ static int DetectEngineHttpRawUriTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1466,12 +1529,15 @@ static int DetectEngineHttpRawUriTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1488,12 +1554,15 @@ static int DetectEngineHttpRawUriTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1584,12 +1653,15 @@ static int DetectEngineHttpRawUriTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1606,12 +1678,15 @@ static int DetectEngineHttpRawUriTest13(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1702,12 +1777,15 @@ static int DetectEngineHttpRawUriTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1724,12 +1802,15 @@ static int DetectEngineHttpRawUriTest14(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1820,12 +1901,15 @@ static int DetectEngineHttpRawUriTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1842,12 +1926,15 @@ static int DetectEngineHttpRawUriTest15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1938,12 +2025,15 @@ static int DetectEngineHttpRawUriTest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1960,12 +2050,15 @@ static int DetectEngineHttpRawUriTest16(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2340,12 +2433,15 @@ static int DetectEngineHttpRawUriTest21(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2362,12 +2458,15 @@ static int DetectEngineHttpRawUriTest21(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2458,12 +2557,15 @@ static int DetectEngineHttpRawUriTest22(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2480,12 +2582,15 @@ static int DetectEngineHttpRawUriTest22(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2576,12 +2681,15 @@ static int DetectEngineHttpRawUriTest23(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2598,12 +2706,15 @@ static int DetectEngineHttpRawUriTest23(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2694,12 +2805,15 @@ static int DetectEngineHttpRawUriTest24(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2716,12 +2830,15 @@ static int DetectEngineHttpRawUriTest24(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2812,12 +2929,15 @@ static int DetectEngineHttpRawUriTest25(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2834,12 +2954,15 @@ static int DetectEngineHttpRawUriTest25(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2930,12 +3053,15 @@ static int DetectEngineHttpRawUriTest26(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2952,12 +3078,15 @@ static int DetectEngineHttpRawUriTest26(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3048,12 +3177,15 @@ static int DetectEngineHttpRawUriTest27(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3070,12 +3202,15 @@ static int DetectEngineHttpRawUriTest27(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3166,12 +3301,15 @@ static int DetectEngineHttpRawUriTest28(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3188,12 +3326,15 @@ static int DetectEngineHttpRawUriTest28(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3272,11 +3413,14 @@ static int DetectEngineHttpRawUriTest29(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3359,11 +3503,14 @@ static int DetectEngineHttpRawUriTest30(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-engine-hsbd.c b/src/detect-engine-hsbd.c index e9b823388f..35d1bc5304 100644 --- a/src/detect-engine-hsbd.c +++ b/src/detect-engine-hsbd.c @@ -371,12 +371,15 @@ static int DetectEngineHttpServerBodyTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -393,12 +396,15 @@ static int DetectEngineHttpServerBodyTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -483,19 +489,25 @@ static int DetectEngineHttpServerBodyTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -595,12 +607,15 @@ static int DetectEngineHttpServerBodyTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -617,19 +632,25 @@ static int DetectEngineHttpServerBodyTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -720,12 +741,15 @@ static int DetectEngineHttpServerBodyTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -742,12 +766,15 @@ static int DetectEngineHttpServerBodyTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -838,12 +865,15 @@ static int DetectEngineHttpServerBodyTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -860,12 +890,15 @@ static int DetectEngineHttpServerBodyTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -956,12 +989,15 @@ static int DetectEngineHttpServerBodyTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -978,12 +1014,15 @@ static int DetectEngineHttpServerBodyTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1074,12 +1113,15 @@ static int DetectEngineHttpServerBodyTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1096,12 +1138,15 @@ static int DetectEngineHttpServerBodyTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1192,12 +1237,15 @@ static int DetectEngineHttpServerBodyTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1214,12 +1262,15 @@ static int DetectEngineHttpServerBodyTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1311,12 +1362,15 @@ static int DetectEngineHttpServerBodyTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1333,12 +1387,15 @@ static int DetectEngineHttpServerBodyTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1430,12 +1487,15 @@ static int DetectEngineHttpServerBodyTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1452,12 +1512,15 @@ static int DetectEngineHttpServerBodyTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1549,12 +1612,15 @@ static int DetectEngineHttpServerBodyTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1571,12 +1637,15 @@ static int DetectEngineHttpServerBodyTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1668,12 +1737,15 @@ static int DetectEngineHttpServerBodyTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1690,12 +1762,15 @@ static int DetectEngineHttpServerBodyTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1787,12 +1862,15 @@ static int DetectEngineHttpServerBodyTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1809,12 +1887,15 @@ static int DetectEngineHttpServerBodyTest13(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1906,12 +1987,15 @@ static int DetectEngineHttpServerBodyTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1928,12 +2012,15 @@ static int DetectEngineHttpServerBodyTest14(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2025,12 +2112,15 @@ static int DetectEngineHttpServerBodyTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2047,12 +2137,15 @@ static int DetectEngineHttpServerBodyTest15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2169,12 +2262,15 @@ libhtp:\n\ SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2191,12 +2287,15 @@ libhtp:\n\ goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2206,12 +2305,15 @@ libhtp:\n\ goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2331,12 +2433,15 @@ libhtp:\n\ SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2353,12 +2458,15 @@ libhtp:\n\ goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2368,12 +2476,15 @@ libhtp:\n\ goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2468,12 +2579,15 @@ static int DetectEngineHttpServerBodyFileDataTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2490,12 +2604,15 @@ static int DetectEngineHttpServerBodyFileDataTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2587,12 +2704,15 @@ static int DetectEngineHttpServerBodyFileDataTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2609,12 +2729,15 @@ static int DetectEngineHttpServerBodyFileDataTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2710,12 +2833,15 @@ static int DetectEngineHttpServerBodyFileDataTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2732,12 +2858,15 @@ static int DetectEngineHttpServerBodyFileDataTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-engine-hscd.c b/src/detect-engine-hscd.c index 33cfb31602..80df25423e 100644 --- a/src/detect-engine-hscd.c +++ b/src/detect-engine-hscd.c @@ -188,12 +188,15 @@ static int DetectEngineHttpStatCodeTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -210,12 +213,15 @@ static int DetectEngineHttpStatCodeTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -300,19 +306,25 @@ static int DetectEngineHttpStatCodeTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -412,12 +424,15 @@ static int DetectEngineHttpStatCodeTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -434,19 +449,25 @@ static int DetectEngineHttpStatCodeTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -537,12 +558,15 @@ static int DetectEngineHttpStatCodeTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -559,12 +583,15 @@ static int DetectEngineHttpStatCodeTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -655,12 +682,15 @@ static int DetectEngineHttpStatCodeTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -677,12 +707,15 @@ static int DetectEngineHttpStatCodeTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -773,12 +806,15 @@ static int DetectEngineHttpStatCodeTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -795,12 +831,15 @@ static int DetectEngineHttpStatCodeTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -891,12 +930,15 @@ static int DetectEngineHttpStatCodeTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -913,12 +955,15 @@ static int DetectEngineHttpStatCodeTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1009,12 +1054,15 @@ static int DetectEngineHttpStatCodeTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1031,12 +1079,15 @@ static int DetectEngineHttpStatCodeTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1128,12 +1179,15 @@ static int DetectEngineHttpStatCodeTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1150,12 +1204,15 @@ static int DetectEngineHttpStatCodeTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1247,12 +1304,15 @@ static int DetectEngineHttpStatCodeTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1269,12 +1329,15 @@ static int DetectEngineHttpStatCodeTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1366,12 +1429,15 @@ static int DetectEngineHttpStatCodeTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1388,12 +1454,15 @@ static int DetectEngineHttpStatCodeTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1485,12 +1554,15 @@ static int DetectEngineHttpStatCodeTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1507,12 +1579,15 @@ static int DetectEngineHttpStatCodeTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1604,12 +1679,15 @@ static int DetectEngineHttpStatCodeTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1626,12 +1704,15 @@ static int DetectEngineHttpStatCodeTest13(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1723,12 +1804,15 @@ static int DetectEngineHttpStatCodeTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1745,12 +1829,15 @@ static int DetectEngineHttpStatCodeTest14(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1842,12 +1929,15 @@ static int DetectEngineHttpStatCodeTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1864,12 +1954,15 @@ static int DetectEngineHttpStatCodeTest15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-engine-hsmd.c b/src/detect-engine-hsmd.c index ae641be732..46af28a99e 100644 --- a/src/detect-engine-hsmd.c +++ b/src/detect-engine-hsmd.c @@ -188,12 +188,15 @@ static int DetectEngineHttpStatMsgTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -210,12 +213,15 @@ static int DetectEngineHttpStatMsgTest01(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -300,19 +306,25 @@ static int DetectEngineHttpStatMsgTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -412,12 +424,15 @@ static int DetectEngineHttpStatMsgTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -434,19 +449,25 @@ static int DetectEngineHttpStatMsgTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -537,12 +558,15 @@ static int DetectEngineHttpStatMsgTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -559,12 +583,15 @@ static int DetectEngineHttpStatMsgTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -655,12 +682,15 @@ static int DetectEngineHttpStatMsgTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -677,12 +707,15 @@ static int DetectEngineHttpStatMsgTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -773,12 +806,15 @@ static int DetectEngineHttpStatMsgTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -795,12 +831,15 @@ static int DetectEngineHttpStatMsgTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -891,12 +930,15 @@ static int DetectEngineHttpStatMsgTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -913,12 +955,15 @@ static int DetectEngineHttpStatMsgTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1009,12 +1054,15 @@ static int DetectEngineHttpStatMsgTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1031,12 +1079,15 @@ static int DetectEngineHttpStatMsgTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1128,12 +1179,15 @@ static int DetectEngineHttpStatMsgTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1150,12 +1204,15 @@ static int DetectEngineHttpStatMsgTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1247,12 +1304,15 @@ static int DetectEngineHttpStatMsgTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1269,12 +1329,15 @@ static int DetectEngineHttpStatMsgTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1366,12 +1429,15 @@ static int DetectEngineHttpStatMsgTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1388,12 +1454,15 @@ static int DetectEngineHttpStatMsgTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1485,12 +1554,15 @@ static int DetectEngineHttpStatMsgTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1507,12 +1579,15 @@ static int DetectEngineHttpStatMsgTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1604,12 +1679,15 @@ static int DetectEngineHttpStatMsgTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1626,12 +1704,15 @@ static int DetectEngineHttpStatMsgTest13(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1723,12 +1804,15 @@ static int DetectEngineHttpStatMsgTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1745,12 +1829,15 @@ static int DetectEngineHttpStatMsgTest14(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1842,12 +1929,15 @@ static int DetectEngineHttpStatMsgTest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1864,12 +1954,15 @@ static int DetectEngineHttpStatMsgTest15(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-engine-hua.c b/src/detect-engine-hua.c index d2c6ee3c09..de7ff95abf 100644 --- a/src/detect-engine-hua.c +++ b/src/detect-engine-hua.c @@ -183,12 +183,15 @@ static int DetectEngineHttpUATest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -274,12 +277,15 @@ static int DetectEngineHttpUATest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -365,12 +371,15 @@ static int DetectEngineHttpUATest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -456,12 +465,15 @@ static int DetectEngineHttpUATest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -547,12 +559,15 @@ static int DetectEngineHttpUATest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -638,12 +653,15 @@ static int DetectEngineHttpUATest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -729,12 +747,15 @@ static int DetectEngineHttpUATest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -820,12 +841,15 @@ static int DetectEngineHttpUATest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -911,12 +935,15 @@ static int DetectEngineHttpUATest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1003,12 +1030,15 @@ static int DetectEngineHttpUATest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1095,12 +1125,15 @@ static int DetectEngineHttpUATest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1187,12 +1220,15 @@ static int DetectEngineHttpUATest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1279,12 +1315,15 @@ static int DetectEngineHttpUATest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1371,12 +1410,15 @@ static int DetectEngineHttpUATest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1463,12 +1505,15 @@ static int DetectEngineHttpUATest15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1555,12 +1600,15 @@ static int DetectEngineHttpUATest16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1647,12 +1695,15 @@ static int DetectEngineHttpUATest17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-engine-state.c b/src/detect-engine-state.c index 7941f0d55a..ca58f4917d 100644 --- a/src/detect-engine-state.c +++ b/src/detect-engine-state.c @@ -893,11 +893,14 @@ static int DeStateSigTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -906,11 +909,14 @@ static int DeStateSigTest01(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -919,11 +925,14 @@ static int DeStateSigTest01(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -932,12 +941,15 @@ static int DeStateSigTest01(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -1029,11 +1041,14 @@ static int DeStateSigTest02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -1042,11 +1057,14 @@ static int DeStateSigTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -1055,11 +1073,14 @@ static int DeStateSigTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 1))) { @@ -1068,12 +1089,15 @@ static int DeStateSigTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -1082,11 +1106,14 @@ static int DeStateSigTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -1095,11 +1122,14 @@ static int DeStateSigTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if ((PacketAlertCheck(p, 1)) || (PacketAlertCheck(p, 2))) { @@ -1110,11 +1140,14 @@ static int DeStateSigTest02(void) { SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf7, httplen7); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (!(PacketAlertCheck(p, 2))) { @@ -1196,12 +1229,15 @@ static int DeStateSigTest03(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1222,11 +1258,14 @@ static int DeStateSigTest03(void) { goto end; } + SCMutexLock(&f->m); FileContainer *files = AppLayerGetFilesFromFlow(p->flow, STREAM_TOSERVER); if (files == NULL) { printf("no stored files: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); File *file = files->head; if (file == NULL) { @@ -1311,12 +1350,15 @@ static int DeStateSigTest04(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1337,11 +1379,14 @@ static int DeStateSigTest04(void) { goto end; } + SCMutexLock(&f->m); FileContainer *files = AppLayerGetFilesFromFlow(p->flow, STREAM_TOSERVER); if (files == NULL) { printf("no stored files: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); File *file = files->head; if (file == NULL) { @@ -1426,12 +1471,15 @@ static int DeStateSigTest05(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1452,11 +1500,14 @@ static int DeStateSigTest05(void) { goto end; } + SCMutexLock(&f->m); FileContainer *files = AppLayerGetFilesFromFlow(p->flow, STREAM_TOSERVER); if (files == NULL) { printf("no stored files: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); File *file = files->head; if (file == NULL) { @@ -1541,12 +1592,15 @@ static int DeStateSigTest06(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1567,11 +1621,14 @@ static int DeStateSigTest06(void) { goto end; } + SCMutexLock(&f->m); FileContainer *files = AppLayerGetFilesFromFlow(p->flow, STREAM_TOSERVER); if (files == NULL) { printf("no stored files: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); File *file = files->head; if (file == NULL) { @@ -1659,12 +1716,15 @@ static int DeStateSigTest07(void) { StreamTcpInitConfig(TRUE); SCLogDebug("\n>>>> processing chunk 1 <<<<\n"); + SCMutexLock(&f->m); int r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1674,12 +1734,15 @@ static int DeStateSigTest07(void) { } SCLogDebug("\n>>>> processing chunk 2 size %u <<<<\n", httplen2); + SCMutexLock(&f->m); r = AppLayerParse(NULL, f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_EOF, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { @@ -1699,11 +1762,14 @@ static int DeStateSigTest07(void) { goto end; } + SCMutexLock(&f->m); FileContainer *files = AppLayerGetFilesFromFlow(p->flow, STREAM_TOSERVER); if (files == NULL) { printf("no stored files: "); + SCMutexUnlock(&f->m); goto end; } + SCMutexUnlock(&f->m); File *file = files->head; if (file == NULL) { diff --git a/src/detect-engine-uri.c b/src/detect-engine-uri.c index 1cbd440e07..e789ae9610 100644 --- a/src/detect-engine-uri.c +++ b/src/detect-engine-uri.c @@ -159,11 +159,14 @@ static int UriTestSig01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -181,11 +184,14 @@ static int UriTestSig01(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -272,11 +278,14 @@ static int UriTestSig02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -294,11 +303,14 @@ static int UriTestSig02(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -385,11 +397,14 @@ static int UriTestSig03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -407,11 +422,14 @@ static int UriTestSig03(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -498,11 +516,14 @@ static int UriTestSig04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -520,11 +541,14 @@ static int UriTestSig04(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -611,11 +635,14 @@ static int UriTestSig05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -633,11 +660,14 @@ static int UriTestSig05(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -724,11 +754,14 @@ static int UriTestSig06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -746,11 +779,14 @@ static int UriTestSig06(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -837,11 +873,14 @@ static int UriTestSig07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -859,11 +898,14 @@ static int UriTestSig07(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -950,11 +992,14 @@ static int UriTestSig08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -972,11 +1017,14 @@ static int UriTestSig08(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1063,11 +1111,14 @@ static int UriTestSig09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1085,11 +1136,14 @@ static int UriTestSig09(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1176,11 +1230,14 @@ static int UriTestSig10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1198,11 +1255,14 @@ static int UriTestSig10(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1290,11 +1350,14 @@ static int UriTestSig11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1312,11 +1375,14 @@ static int UriTestSig11(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1404,11 +1470,14 @@ static int UriTestSig12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1426,11 +1495,14 @@ static int UriTestSig12(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1517,11 +1589,14 @@ static int UriTestSig13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1539,11 +1614,14 @@ static int UriTestSig13(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1631,11 +1709,14 @@ static int UriTestSig14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1653,11 +1734,14 @@ static int UriTestSig14(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1745,11 +1829,14 @@ static int UriTestSig15(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1767,11 +1854,14 @@ static int UriTestSig15(void) DetectEngineStateReset(f.de_state, STREAM_TOSERVER | STREAM_TOCLIENT); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1857,11 +1947,14 @@ static int UriTestSig16(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1882,11 +1975,14 @@ static int UriTestSig16(void) p->payload = http_buf2; p->payload_len = http_buf2_len; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1971,11 +2067,14 @@ static int UriTestSig17(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2060,11 +2159,14 @@ static int UriTestSig18(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2150,11 +2252,14 @@ static int UriTestSig19(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2239,11 +2344,14 @@ static int UriTestSig20(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2327,11 +2435,14 @@ static int UriTestSig21(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2415,11 +2526,14 @@ static int UriTestSig22(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2502,11 +2616,14 @@ static int UriTestSig23(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2589,11 +2706,14 @@ static int UriTestSig24(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2676,11 +2796,14 @@ static int UriTestSig25(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2763,11 +2886,14 @@ static int UriTestSig26(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2850,11 +2976,14 @@ static int UriTestSig27(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2971,11 +3100,14 @@ static int UriTestSig28(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3057,11 +3189,14 @@ static int UriTestSig29(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3143,11 +3278,14 @@ static int UriTestSig30(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3229,11 +3367,14 @@ static int UriTestSig31(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3315,11 +3456,14 @@ static int UriTestSig32(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3399,11 +3543,14 @@ static int UriTestSig33(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3483,11 +3630,14 @@ static int UriTestSig34(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3567,11 +3717,14 @@ static int UriTestSig35(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3651,11 +3804,14 @@ static int UriTestSig36(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3735,11 +3891,14 @@ static int UriTestSig37(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3819,11 +3978,14 @@ static int UriTestSig38(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-ftpbounce.c b/src/detect-ftpbounce.c index 229bacb772..6f36f66b0d 100644 --- a/src/detect-ftpbounce.c +++ b/src/detect-ftpbounce.c @@ -368,10 +368,12 @@ static int DetectFtpbounceTestALMatch02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v,(void *)de_ctx,(void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER, ftpbuf1, ftplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -379,6 +381,7 @@ static int DetectFtpbounceTestALMatch02(void) { if (r != 0) { SCLogDebug("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -386,6 +389,7 @@ static int DetectFtpbounceTestALMatch02(void) { if (r != 0) { SCLogDebug("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -393,9 +397,12 @@ static int DetectFtpbounceTestALMatch02(void) { if (r != 0) { SCLogDebug("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + FtpState *ftp_state = f.alstate; if (ftp_state == NULL) { SCLogDebug("no ftp state: "); @@ -498,10 +505,12 @@ static int DetectFtpbounceTestALMatch03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v,(void *)de_ctx,(void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_FTP, STREAM_TOSERVER, ftpbuf1, ftplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -509,6 +518,7 @@ static int DetectFtpbounceTestALMatch03(void) { if (r != 0) { SCLogDebug("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -516,6 +526,7 @@ static int DetectFtpbounceTestALMatch03(void) { if (r != 0) { SCLogDebug("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -523,8 +534,10 @@ static int DetectFtpbounceTestALMatch03(void) { if (r != 0) { SCLogDebug("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); FtpState *ftp_state = f.alstate; if (ftp_state == NULL) { diff --git a/src/detect-http-client-body.c b/src/detect-http-client-body.c index aca5d33c77..9c8dd64f08 100644 --- a/src/detect-http-client-body.c +++ b/src/detect-http-client-body.c @@ -342,12 +342,15 @@ static int DetectHttpClientBodyTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -446,12 +449,15 @@ static int DetectHttpClientBodyTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -467,11 +473,14 @@ static int DetectHttpClientBodyTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -564,12 +573,15 @@ static int DetectHttpClientBodyTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -586,12 +598,15 @@ static int DetectHttpClientBodyTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -685,12 +700,15 @@ static int DetectHttpClientBodyTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -707,12 +725,15 @@ static int DetectHttpClientBodyTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -805,12 +826,15 @@ static int DetectHttpClientBodyTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -827,12 +851,15 @@ static int DetectHttpClientBodyTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -916,12 +943,15 @@ static int DetectHttpClientBodyTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1011,12 +1041,15 @@ static int DetectHttpClientBodyTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1107,12 +1140,15 @@ static int DetectHttpClientBodyTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1208,11 +1244,14 @@ static int DetectHttpClientBodyTest14(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1222,25 +1261,32 @@ static int DetectHttpClientBodyTest14(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1)) { printf("sig 1 alerted (2): "); + SCMutexUnlock(&f.m); goto end; } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1250,12 +1296,15 @@ static int DetectHttpClientBodyTest14(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1265,11 +1314,14 @@ static int DetectHttpClientBodyTest14(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1279,11 +1331,14 @@ static int DetectHttpClientBodyTest14(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1295,11 +1350,14 @@ static int DetectHttpClientBodyTest14(void) { SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf7, httplen7); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1401,11 +1459,14 @@ static int DetectHttpClientBodyTest15(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1415,11 +1476,14 @@ static int DetectHttpClientBodyTest15(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1429,11 +1493,14 @@ static int DetectHttpClientBodyTest15(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1443,12 +1510,15 @@ static int DetectHttpClientBodyTest15(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1458,11 +1528,14 @@ static int DetectHttpClientBodyTest15(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1472,11 +1545,14 @@ static int DetectHttpClientBodyTest15(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1488,11 +1564,14 @@ static int DetectHttpClientBodyTest15(void) { SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf7, httplen7); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); diff --git a/src/detect-http-cookie.c b/src/detect-http-cookie.c index 09b9e3919a..4d1a7b545a 100644 --- a/src/detect-http-cookie.c +++ b/src/detect-http-cookie.c @@ -366,12 +366,15 @@ static int DetectHttpCookieSigTest01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -457,12 +460,15 @@ static int DetectHttpCookieSigTest02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -542,12 +548,15 @@ static int DetectHttpCookieSigTest03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -628,12 +637,15 @@ static int DetectHttpCookieSigTest04(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -714,12 +726,15 @@ static int DetectHttpCookieSigTest05(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -801,11 +816,14 @@ static int DetectHttpCookieSigTest06(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); goto end; + SCMutexUnlock(&f.m); } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -885,12 +903,15 @@ static int DetectHttpCookieSigTest07(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -989,13 +1010,16 @@ static int DetectHttpCookieSigTest08(void) DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); /* request */ + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf_request, httpbuf_request_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1010,13 +1034,16 @@ static int DetectHttpCookieSigTest08(void) } /* response */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, httpbuf_response, httpbuf_response_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1116,13 +1143,16 @@ static int DetectHttpCookieSigTest09(void) DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); /* request */ + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf_request, httpbuf_request_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1137,13 +1167,16 @@ static int DetectHttpCookieSigTest09(void) } /* response */ + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, httpbuf_response, httpbuf_response_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-http-header.c b/src/detect-http-header.c index e00509666a..e29b4880dd 100644 --- a/src/detect-http-header.c +++ b/src/detect-http-header.c @@ -348,12 +348,15 @@ static int DetectHttpHeaderTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -451,12 +454,15 @@ static int DetectHttpHeaderTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -473,12 +479,15 @@ static int DetectHttpHeaderTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -568,12 +577,15 @@ static int DetectHttpHeaderTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -590,12 +602,15 @@ static int DetectHttpHeaderTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -687,12 +702,15 @@ static int DetectHttpHeaderTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -709,12 +727,15 @@ static int DetectHttpHeaderTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -805,12 +826,15 @@ static int DetectHttpHeaderTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -827,12 +851,15 @@ static int DetectHttpHeaderTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -915,12 +942,15 @@ static int DetectHttpHeaderTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1009,12 +1039,15 @@ static int DetectHttpHeaderTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1104,12 +1137,15 @@ static int DetectHttpHeaderTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-http-hh.c b/src/detect-http-hh.c index 441ec422ff..7b65730b0d 100644 --- a/src/detect-http-hh.c +++ b/src/detect-http-hh.c @@ -326,12 +326,15 @@ static int DetectHttpHHTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -426,12 +429,15 @@ static int DetectHttpHHTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -447,11 +453,14 @@ static int DetectHttpHHTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -540,12 +549,15 @@ static int DetectHttpHHTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -562,12 +574,15 @@ static int DetectHttpHHTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -661,12 +676,15 @@ static int DetectHttpHHTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -683,12 +701,15 @@ static int DetectHttpHHTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -781,12 +802,15 @@ static int DetectHttpHHTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -803,12 +827,16 @@ static int DetectHttpHHTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -890,12 +918,15 @@ static int DetectHttpHHTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -982,12 +1013,15 @@ static int DetectHttpHHTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1076,12 +1110,15 @@ static int DetectHttpHHTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1178,11 +1215,14 @@ static int DetectHttpHHTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1192,11 +1232,14 @@ static int DetectHttpHHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1206,11 +1249,14 @@ static int DetectHttpHHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1220,11 +1266,14 @@ static int DetectHttpHHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1234,11 +1283,14 @@ static int DetectHttpHHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1250,11 +1302,14 @@ static int DetectHttpHHTest14(void) SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); diff --git a/src/detect-http-hrh.c b/src/detect-http-hrh.c index 3ef6887c05..8100439c12 100644 --- a/src/detect-http-hrh.c +++ b/src/detect-http-hrh.c @@ -326,12 +326,15 @@ static int DetectHttpHRHTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -426,12 +429,15 @@ static int DetectHttpHRHTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -447,11 +453,14 @@ static int DetectHttpHRHTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -540,12 +549,15 @@ static int DetectHttpHRHTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -562,12 +574,15 @@ static int DetectHttpHRHTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -661,12 +676,15 @@ static int DetectHttpHRHTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -683,12 +701,15 @@ static int DetectHttpHRHTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -781,12 +802,15 @@ static int DetectHttpHRHTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -803,12 +827,15 @@ static int DetectHttpHRHTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -890,12 +917,15 @@ static int DetectHttpHRHTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -982,12 +1012,15 @@ static int DetectHttpHRHTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1076,12 +1109,15 @@ static int DetectHttpHRHTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1178,11 +1214,14 @@ static int DetectHttpHRHTest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1192,11 +1231,14 @@ static int DetectHttpHRHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1206,11 +1248,14 @@ static int DetectHttpHRHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1220,11 +1265,14 @@ static int DetectHttpHRHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1234,11 +1282,14 @@ static int DetectHttpHRHTest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1250,11 +1301,14 @@ static int DetectHttpHRHTest14(void) SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -2037,12 +2091,15 @@ static int DetectHttpHRHTest37(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2059,12 +2116,15 @@ static int DetectHttpHRHTest37(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-http-method.c b/src/detect-http-method.c index d6a7549393..4252ea9a72 100644 --- a/src/detect-http-method.c +++ b/src/detect-http-method.c @@ -456,11 +456,14 @@ static int DetectHttpMethodSigTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -553,11 +556,14 @@ static int DetectHttpMethodSigTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -641,11 +647,14 @@ static int DetectHttpMethodSigTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); goto end; + SCMutexUnlock(&f.m); } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -731,11 +740,14 @@ static int DetectHttpMethodSigTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-http-raw-header.c b/src/detect-http-raw-header.c index 0245bfd68a..3113d40f03 100644 --- a/src/detect-http-raw-header.c +++ b/src/detect-http-raw-header.c @@ -347,12 +347,15 @@ static int DetectHttpRawHeaderTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -450,12 +453,15 @@ static int DetectHttpRawHeaderTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -472,12 +478,15 @@ static int DetectHttpRawHeaderTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -567,12 +576,15 @@ static int DetectHttpRawHeaderTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -589,12 +601,15 @@ static int DetectHttpRawHeaderTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -685,12 +700,15 @@ static int DetectHttpRawHeaderTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -707,12 +725,15 @@ static int DetectHttpRawHeaderTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -803,12 +824,15 @@ static int DetectHttpRawHeaderTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -825,12 +849,15 @@ static int DetectHttpRawHeaderTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -913,12 +940,15 @@ static int DetectHttpRawHeaderTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1007,12 +1037,15 @@ static int DetectHttpRawHeaderTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1102,12 +1135,15 @@ static int DetectHttpRawHeaderTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-http-server-body.c b/src/detect-http-server-body.c index 492ebb86e2..d49f47f905 100644 --- a/src/detect-http-server-body.c +++ b/src/detect-http-server-body.c @@ -362,18 +362,22 @@ static int DetectHttpServerBodyTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START|STREAM_EOF, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -477,17 +481,21 @@ static int DetectHttpServerBodyTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -503,11 +511,14 @@ static int DetectHttpServerBodyTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -603,12 +614,15 @@ static int DetectHttpServerBodyTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -617,12 +631,15 @@ static int DetectHttpServerBodyTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -632,12 +649,15 @@ static int DetectHttpServerBodyTest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -737,12 +757,15 @@ static int DetectHttpServerBodyTest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -751,12 +774,15 @@ static int DetectHttpServerBodyTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -766,10 +792,12 @@ static int DetectHttpServerBodyTest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -777,8 +805,10 @@ static int DetectHttpServerBodyTest09(void) if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -878,12 +908,15 @@ static int DetectHttpServerBodyTest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -892,12 +925,15 @@ static int DetectHttpServerBodyTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -907,10 +943,12 @@ static int DetectHttpServerBodyTest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -918,8 +956,10 @@ static int DetectHttpServerBodyTest10(void) if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1015,12 +1055,15 @@ static int DetectHttpServerBodyTest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1029,12 +1072,15 @@ static int DetectHttpServerBodyTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -1044,12 +1090,15 @@ static int DetectHttpServerBodyTest11(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1145,12 +1194,15 @@ static int DetectHttpServerBodyTest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1159,12 +1211,15 @@ static int DetectHttpServerBodyTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -1174,12 +1229,15 @@ static int DetectHttpServerBodyTest12(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1263,18 +1321,22 @@ static int DetectHttpServerBodyTest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START|STREAM_EOF, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1382,9 +1444,11 @@ static int DetectHttpServerBodyTest14(void) { SCLogDebug("add chunk 1"); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } @@ -1393,8 +1457,10 @@ static int DetectHttpServerBodyTest14(void) { r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SCLogDebug("inspect chunk 1"); @@ -1408,9 +1474,11 @@ static int DetectHttpServerBodyTest14(void) { SCLogDebug("add chunk 3"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } @@ -1419,8 +1487,10 @@ static int DetectHttpServerBodyTest14(void) { r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SCLogDebug("inspect chunk 4"); @@ -1536,17 +1606,21 @@ static int DetectHttpServerBodyTest15(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1560,17 +1634,21 @@ static int DetectHttpServerBodyTest15(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -2344,18 +2422,22 @@ static int DetectHttpServerBodyFileDataTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START|STREAM_EOF, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2459,10 +2541,12 @@ static int DetectHttpServerBodyFileDataTest02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -2470,8 +2554,10 @@ static int DetectHttpServerBodyFileDataTest02(void) if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2487,11 +2573,14 @@ static int DetectHttpServerBodyFileDataTest02(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2587,12 +2676,15 @@ static int DetectHttpServerBodyFileDataTest03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2601,12 +2693,15 @@ static int DetectHttpServerBodyFileDataTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -2616,12 +2711,16 @@ static int DetectHttpServerBodyFileDataTest03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2721,12 +2820,15 @@ static int DetectHttpServerBodyFileDataTest04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2735,12 +2837,15 @@ static int DetectHttpServerBodyFileDataTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -2750,10 +2855,12 @@ static int DetectHttpServerBodyFileDataTest04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -2761,8 +2868,10 @@ static int DetectHttpServerBodyFileDataTest04(void) if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2862,12 +2971,15 @@ static int DetectHttpServerBodyFileDataTest05(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2876,12 +2988,15 @@ static int DetectHttpServerBodyFileDataTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -2891,10 +3006,12 @@ static int DetectHttpServerBodyFileDataTest05(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -2902,8 +3019,10 @@ static int DetectHttpServerBodyFileDataTest05(void) if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2999,12 +3118,15 @@ static int DetectHttpServerBodyFileDataTest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3013,12 +3135,15 @@ static int DetectHttpServerBodyFileDataTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -3028,12 +3153,15 @@ static int DetectHttpServerBodyFileDataTest06(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3129,12 +3257,15 @@ static int DetectHttpServerBodyFileDataTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, http_buf1, http_len1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3143,12 +3274,15 @@ static int DetectHttpServerBodyFileDataTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -3158,12 +3292,15 @@ static int DetectHttpServerBodyFileDataTest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, http_buf3, http_len3); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -3247,18 +3384,22 @@ static int DetectHttpServerBodyFileDataTest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START|STREAM_EOF, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_START|STREAM_EOF, http_buf2, http_len2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -3364,17 +3505,21 @@ static int DetectHttpServerBodyFileDataTest09(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3384,17 +3529,21 @@ static int DetectHttpServerBodyFileDataTest09(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3508,17 +3657,21 @@ static int DetectHttpServerBodyFileDataTest10(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3528,17 +3681,21 @@ static int DetectHttpServerBodyFileDataTest10(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT|STREAM_EOF, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); diff --git a/src/detect-http-stat-code.c b/src/detect-http-stat-code.c index e10de68620..00ddc947ad 100644 --- a/src/detect-http-stat-code.c +++ b/src/detect-http-stat-code.c @@ -263,17 +263,21 @@ static int DetectHttpStatCodeSigTest01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOCLIENT, httpbuf2, httplen2); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -362,10 +366,12 @@ static int DetectHttpStatCodeSigTest02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -373,8 +379,10 @@ static int DetectHttpStatCodeSigTest02(void) { if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -469,10 +477,12 @@ static int DetectHttpStatCodeSigTest03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -480,8 +490,10 @@ static int DetectHttpStatCodeSigTest03(void) { if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -576,10 +588,12 @@ static int DetectHttpStatCodeSigTest04(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -587,8 +601,10 @@ static int DetectHttpStatCodeSigTest04(void) { if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-http-stat-msg.c b/src/detect-http-stat-msg.c index 37200f28e7..89afab8eff 100644 --- a/src/detect-http-stat-msg.c +++ b/src/detect-http-stat-msg.c @@ -261,10 +261,12 @@ static int DetectHttpStatMsgSigTest01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -272,8 +274,10 @@ static int DetectHttpStatMsgSigTest01(void) { if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -360,10 +364,12 @@ static int DetectHttpStatMsgSigTest02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -371,8 +377,10 @@ static int DetectHttpStatMsgSigTest02(void) { if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -463,10 +471,12 @@ static int DetectHttpStatMsgSigTest03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } @@ -474,8 +484,10 @@ static int DetectHttpStatMsgSigTest03(void) { if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { diff --git a/src/detect-http-ua.c b/src/detect-http-ua.c index 7cdba8e8e6..f657a7bdf8 100644 --- a/src/detect-http-ua.c +++ b/src/detect-http-ua.c @@ -327,12 +327,15 @@ static int DetectHttpUATest06(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -427,12 +430,15 @@ static int DetectHttpUATest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -448,11 +454,14 @@ static int DetectHttpUATest07(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -541,12 +550,15 @@ static int DetectHttpUATest08(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -563,12 +575,15 @@ static int DetectHttpUATest08(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -662,12 +677,15 @@ static int DetectHttpUATest09(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -684,12 +702,15 @@ static int DetectHttpUATest09(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -782,12 +803,15 @@ static int DetectHttpUATest10(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http1_buf, http1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -804,12 +828,15 @@ static int DetectHttpUATest10(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http2_buf, http2_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: \n", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -891,12 +918,15 @@ static int DetectHttpUATest11(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -983,12 +1013,15 @@ static int DetectHttpUATest12(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1077,12 +1110,15 @@ static int DetectHttpUATest13(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf, http_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1179,11 +1215,14 @@ static int DetectHttpUATest14(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1193,11 +1232,14 @@ static int DetectHttpUATest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1207,11 +1249,14 @@ static int DetectHttpUATest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1221,11 +1266,14 @@ static int DetectHttpUATest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1235,11 +1283,14 @@ static int DetectHttpUATest14(void) } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1251,11 +1302,14 @@ static int DetectHttpUATest14(void) SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); diff --git a/src/detect-luajit.c b/src/detect-luajit.c index 7d7b92bb2d..2b453c52b6 100644 --- a/src/detect-luajit.c +++ b/src/detect-luajit.c @@ -970,11 +970,14 @@ static int LuajitMatchTest01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); HtpState *http_state = f.alstate; if (http_state == NULL) { printf("no http state: "); @@ -990,11 +993,14 @@ static int LuajitMatchTest01(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect for p2 */ SCLogDebug("inspecting p2"); SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1388,11 +1394,14 @@ static int LuajitMatchTest04(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); HtpState *http_state = f.alstate; if (http_state == NULL) { printf("no http state: "); @@ -1408,11 +1417,14 @@ static int LuajitMatchTest04(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect for p2 */ SCLogInfo("p2"); SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1524,11 +1536,14 @@ static int LuajitMatchTest05(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); HtpState *http_state = f.alstate; if (http_state == NULL) { printf("no http state: "); @@ -1544,11 +1559,14 @@ static int LuajitMatchTest05(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect for p2 */ SCLogInfo("p2"); SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -1665,11 +1683,14 @@ static int LuajitMatchTest06(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); HtpState *http_state = f.alstate; if (http_state == NULL) { printf("no http state: "); @@ -1685,11 +1706,14 @@ static int LuajitMatchTest06(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect for p2 */ SCLogInfo("p2"); SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); diff --git a/src/detect-pcre.c b/src/detect-pcre.c index b2df240ee3..257ad94a72 100644 --- a/src/detect-pcre.c +++ b/src/detect-pcre.c @@ -1719,12 +1719,15 @@ static int DetectPcreTestSig01Real(int mpm_type) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, buf, buflen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1) == 1) { result = 1; @@ -1967,12 +1970,15 @@ static int DetectPcreModifPTest04(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); HtpState *http_state = f.alstate; if (http_state == NULL) { @@ -2094,12 +2100,15 @@ static int DetectPcreModifPTest05(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect for p1 */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p1); @@ -2122,12 +2131,15 @@ static int DetectPcreModifPTest05(void) { goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect for p2 */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p2); @@ -2269,11 +2281,14 @@ static int DetectPcreTestSig09(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2357,11 +2372,14 @@ static int DetectPcreTestSig10(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2445,11 +2463,14 @@ static int DetectPcreTestSig11(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2533,11 +2554,14 @@ static int DetectPcreTestSig12(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2621,11 +2645,14 @@ static int DetectPcreTestSig13(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2709,11 +2736,14 @@ static int DetectPcreTestSig14(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2798,11 +2828,14 @@ static int DetectPcreTestSig15(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2887,11 +2920,14 @@ static int DetectPcreTestSig16(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -2964,6 +3000,7 @@ static int DetectPcreTxBodyChunksTest01(void) { AppLayerHtpEnableRequestBodyCallback(); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); @@ -3060,6 +3097,7 @@ static int DetectPcreTxBodyChunksTest01(void) { result = 1; end: + SCMutexUnlock(&f.m); StreamTcpFreeConfig(TRUE); FLOW_DESTROY(&f); UTHFreePacket(p); @@ -3130,11 +3168,14 @@ static int DetectPcreTxBodyChunksTest02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3144,11 +3185,14 @@ static int DetectPcreTxBodyChunksTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3158,11 +3202,14 @@ static int DetectPcreTxBodyChunksTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3172,12 +3219,15 @@ static int DetectPcreTxBodyChunksTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3187,11 +3237,14 @@ static int DetectPcreTxBodyChunksTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3201,11 +3254,14 @@ static int DetectPcreTxBodyChunksTest02(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3217,11 +3273,14 @@ static int DetectPcreTxBodyChunksTest02(void) { SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf7, httplen7); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3353,11 +3412,14 @@ static int DetectPcreTxBodyChunksTest03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3367,11 +3429,14 @@ static int DetectPcreTxBodyChunksTest03(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3381,11 +3446,14 @@ static int DetectPcreTxBodyChunksTest03(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf3, httplen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3395,12 +3463,15 @@ static int DetectPcreTxBodyChunksTest03(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf4, httplen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3410,11 +3481,14 @@ static int DetectPcreTxBodyChunksTest03(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf5, httplen5); if (r != 0) { printf("toserver chunk 5 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3424,11 +3498,14 @@ static int DetectPcreTxBodyChunksTest03(void) { } p->alerts.cnt = 0; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf6, httplen6); if (r != 0) { printf("toserver chunk 6 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3440,11 +3517,14 @@ static int DetectPcreTxBodyChunksTest03(void) { SCLogDebug("sending data chunk 7"); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf7, httplen7); if (r != 0) { printf("toserver chunk 7 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -3550,11 +3630,15 @@ static int DetectPcreFlowvarCapture01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + HtpState *http_state = f.alstate; if (http_state == NULL) { printf("no http state: "); @@ -3688,11 +3772,15 @@ static int DetectPcreFlowvarCapture02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + HtpState *http_state = f.alstate; if (http_state == NULL) { printf("no http state: "); @@ -3822,11 +3910,15 @@ static int DetectPcreFlowvarCapture03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); + HtpState *http_state = f.alstate; if (http_state == NULL) { printf("no http state: "); diff --git a/src/detect-ssh-proto-version.c b/src/detect-ssh-proto-version.c index 8662010df8..41201a76f8 100644 --- a/src/detect-ssh-proto-version.c +++ b/src/detect-ssh-proto-version.c @@ -390,29 +390,35 @@ static int DetectSshVersionTestDetect01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -492,6 +498,7 @@ static int DetectSshVersionTestDetect02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); @@ -501,20 +508,24 @@ static int DetectSshVersionTestDetect02(void) { r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -594,29 +605,35 @@ static int DetectSshVersionTestDetect03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { diff --git a/src/detect-ssh-software-version.c b/src/detect-ssh-software-version.c index b5d8fbf200..f1ef122b31 100644 --- a/src/detect-ssh-software-version.c +++ b/src/detect-ssh-software-version.c @@ -351,29 +351,35 @@ static int DetectSshSoftwareVersionTestDetect01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -453,29 +459,35 @@ static int DetectSshSoftwareVersionTestDetect02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { @@ -555,29 +567,35 @@ static int DetectSshSoftwareVersionTestDetect03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf1, sshlen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf2, sshlen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf3, sshlen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_SSH, STREAM_TOSERVER, sshbuf4, sshlen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SshState *ssh_state = f.alstate; if (ssh_state == NULL) { diff --git a/src/detect-ssl-state.c b/src/detect-ssl-state.c index 232c8951a4..1b9e100bea 100644 --- a/src/detect-ssl-state.c +++ b/src/detect-ssl-state.c @@ -753,12 +753,15 @@ static int DetectSslStateTest07(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER | STREAM_START, chello_buf, chello_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); ssl_state = f.alstate; if (ssl_state == NULL) { @@ -779,12 +782,15 @@ static int DetectSslStateTest07(void) if (PacketAlertCheck(p, 4)) goto end; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOCLIENT, shello_buf, shello_buf_len); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ p->alerts.cnt = 0; @@ -799,13 +805,16 @@ static int DetectSslStateTest07(void) if (PacketAlertCheck(p, 4)) goto end; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, client_change_cipher_spec_buf, client_change_cipher_spec_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ p->alerts.cnt = 0; @@ -820,13 +829,16 @@ static int DetectSslStateTest07(void) if (PacketAlertCheck(p, 4)) goto end; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOCLIENT, server_change_cipher_spec_buf, server_change_cipher_spec_buf_len); if (r != 0) { printf("toclient chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ p->alerts.cnt = 0; @@ -841,13 +853,16 @@ static int DetectSslStateTest07(void) if (PacketAlertCheck(p, 4)) goto end; + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, toserver_app_data_buf, toserver_app_data_buf_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ p->alerts.cnt = 0; diff --git a/src/detect-ssl-version.c b/src/detect-ssl-version.c index 5298f509e9..71d3c8346d 100644 --- a/src/detect-ssl-version.c +++ b/src/detect-ssl-version.c @@ -452,29 +452,35 @@ static int DetectSslVersionTestDetect01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf1, ssllen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf2, ssllen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf3, ssllen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf4, ssllen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *app_state = f.alstate; if (app_state == NULL) { @@ -567,29 +573,35 @@ static int DetectSslVersionTestDetect02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf1, ssllen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf2, ssllen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf3, ssllen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf4, ssllen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *app_state = f.alstate; if (app_state == NULL) { @@ -692,29 +704,35 @@ static int DetectSslVersionTestDetect03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf1, ssllen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf2, ssllen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf3, ssllen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, sslbuf4, ssllen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *app_state = f.alstate; if (app_state == NULL) { diff --git a/src/detect-tls-version.c b/src/detect-tls-version.c index 2b0c013ef8..04bc339784 100644 --- a/src/detect-tls-version.c +++ b/src/detect-tls-version.c @@ -359,29 +359,35 @@ static int DetectTlsVersionTestDetect01(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf2, tlslen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf3, tlslen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf4, tlslen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -476,29 +482,35 @@ static int DetectTlsVersionTestDetect02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf2, tlslen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf3, tlslen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf4, tlslen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { @@ -604,29 +616,35 @@ static int DetectTlsVersionTestDetect03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf1, tlslen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf2, tlslen2); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf3, tlslen3); if (r != 0) { printf("toserver chunk 3 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } r = AppLayerParse(NULL, &f, ALPROTO_TLS, STREAM_TOSERVER, tlsbuf4, tlslen4); if (r != 0) { printf("toserver chunk 4 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SSLState *ssl_state = f.alstate; if (ssl_state == NULL) { diff --git a/src/detect-uricontent.c b/src/detect-uricontent.c index bf0a9104f8..5b5c886d9f 100644 --- a/src/detect-uricontent.c +++ b/src/detect-uricontent.c @@ -290,6 +290,7 @@ static int HTTPUriTest01(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START| STREAM_EOF, httpbuf1, httplen1); if (r != 0) { @@ -326,6 +327,7 @@ static int HTTPUriTest01(void) { result = 1; end: StreamTcpFreeConfig(TRUE); + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); return result; } @@ -350,6 +352,7 @@ static int HTTPUriTest02(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START| STREAM_EOF, httpbuf1, httplen1); if (r != 0) { @@ -388,6 +391,7 @@ end: StreamTcpFreeConfig(TRUE); if (htp_state != NULL) HTPStateFree(htp_state); + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); return result; } @@ -412,6 +416,7 @@ static int HTTPUriTest03(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START| STREAM_EOF, httpbuf1, httplen1); if (r != 0) { @@ -450,6 +455,7 @@ end: StreamTcpFreeConfig(TRUE); if (htp_state != NULL) HTPStateFree(htp_state); + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); return result; } @@ -475,6 +481,7 @@ static int HTTPUriTest04(void) { StreamTcpInitConfig(TRUE); + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER|STREAM_START| STREAM_EOF, httpbuf1, httplen1); if (r != 0) { @@ -513,6 +520,7 @@ end: StreamTcpFreeConfig(TRUE); if (htp_state != NULL) HTPStateFree(htp_state); + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); return result; } @@ -627,11 +635,14 @@ static int DetectUriSigTest02(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -735,11 +746,14 @@ static int DetectUriSigTest03(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -756,11 +770,14 @@ static int DetectUriSigTest03(void) { } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf2, httplen2); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -1077,11 +1094,14 @@ static int DetectUriSigTest05(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1211,11 +1231,14 @@ static int DetectUriSigTest06(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); @@ -1327,11 +1350,14 @@ static int DetectUriSigTest07(void) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&th_v, de_ctx, det_ctx, p); diff --git a/src/detect-urilen.c b/src/detect-urilen.c index ed288c9663..6102b48a35 100644 --- a/src/detect-urilen.c +++ b/src/detect-urilen.c @@ -629,11 +629,14 @@ static int DetectUrilenSigTest01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, httpbuf1, httplen1); if (r != 0) { SCLogDebug("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); HtpState *htp_state = f.alstate; if (htp_state == NULL) { diff --git a/src/detect.c b/src/detect.c index d05cdf7207..a6ecc794d3 100644 --- a/src/detect.c +++ b/src/detect.c @@ -5312,12 +5312,15 @@ static int SigTest06Real (int mpm_type) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, buf, buflen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1) && PacketAlertCheck(p, 2)) @@ -5404,12 +5407,15 @@ static int SigTest07Real (int mpm_type) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx,(void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, buf, buflen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1) && PacketAlertCheck(p, 2)) @@ -5418,6 +5424,7 @@ static int SigTest07Real (int mpm_type) { result = 1; end: + SCMutexUnlock(&f.m); UTHFreePackets(&p, 1); StreamTcpFreeConfig(TRUE); AppLayerParserCleanupState(&f); @@ -5497,12 +5504,15 @@ static int SigTest08Real (int mpm_type) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx,(void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, buf, buflen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1) && PacketAlertCheck(p, 2)) @@ -5590,12 +5600,15 @@ static int SigTest09Real (int mpm_type) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx,(void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, buf, buflen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1) && PacketAlertCheck(p, 2)) @@ -5675,12 +5688,16 @@ static int SigTest10Real (int mpm_type) { SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&th_v, (void *)de_ctx,(void *)&det_ctx); + + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, buf, buflen); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); result = 0; + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); SigMatchSignatures(&th_v, de_ctx, det_ctx, p); if (PacketAlertCheck(p, 1) && PacketAlertCheck(p, 2)) @@ -10695,11 +10712,14 @@ static int SigTestDropFlow01(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -10791,11 +10811,14 @@ static int SigTestDropFlow02(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -10915,11 +10938,14 @@ static int SigTestDropFlow03(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -10957,11 +10983,14 @@ static int SigTestDropFlow03(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p2); @@ -11077,11 +11106,14 @@ static int SigTestDropFlow04(void) SigGroupBuild(de_ctx); DetectEngineThreadCtxInit(&tv, (void *)de_ctx, (void *)&det_ctx); + SCMutexLock(&f.m); int r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf1, http_buf1_len); if (r != 0) { printf("toserver chunk 1 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); http_state = f.alstate; if (http_state == NULL) { @@ -11129,11 +11161,14 @@ static int SigTestDropFlow04(void) goto end; } + SCMutexLock(&f.m); r = AppLayerParse(NULL, &f, ALPROTO_HTTP, STREAM_TOSERVER, http_buf2, http_buf2_len); if (r != 0) { printf("toserver chunk 2 returned %" PRId32 ", expected 0: ", r); + SCMutexUnlock(&f.m); goto end; } + SCMutexUnlock(&f.m); /* do detect */ SigMatchSignatures(&tv, de_ctx, det_ctx, p2); diff --git a/src/stream-tcp-reassemble.c b/src/stream-tcp-reassemble.c index 72f7818ee8..359c5a0056 100644 --- a/src/stream-tcp-reassemble.c +++ b/src/stream-tcp-reassemble.c @@ -4987,11 +4987,14 @@ static int StreamTcpTestMissedPacket (TcpReassemblyThreadCtx *ra_ctx, s = &ssn->client; } + SCMutexLock(&f.m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, ssn, s, p, &pq) == -1) { + SCMutexUnlock(&f.m); SCFree(p); return -1; } + SCMutexUnlock(&f.m); SCFree(p); return 0; } @@ -6063,6 +6066,7 @@ static int StreamTcpReassembleTest38 (void) { TcpStream *s = NULL; s = &ssn.server; + SCMutexLock(&f.m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, &ssn, s, p, &pq) == -1) { printf("failed in segments reassembly, while processing toserver packet (1): "); goto end; @@ -6138,6 +6142,7 @@ static int StreamTcpReassembleTest38 (void) { end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); + SCMutexUnlock(&f.m); SCFree(p); return ret; } @@ -6206,6 +6211,7 @@ static int StreamTcpReassembleTest39 (void) { TcpStream *s = NULL; s = &ssn.server; + SCMutexLock(&f->m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, &ssn, s, p, &pq) == -1) { printf("failed in segments reassembly, while processing toserver packet (1): "); goto end; @@ -6347,6 +6353,7 @@ end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); SCFree(p); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -6417,6 +6424,7 @@ static int StreamTcpReassembleTest40 (void) { TcpStream *s = NULL; s = &ssn.client; + SCMutexLock(&f->m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, &ssn, s, p, &pq) == -1) { printf("failed in segments reassembly, while processing toserver packet (1): "); goto end; @@ -6584,6 +6592,7 @@ end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); SCFree(p); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -6668,6 +6677,7 @@ static int StreamTcpReassembleTest41 (void) { TcpStream *s = NULL; s = &ssn.server; + SCMutexLock(&f->m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, &ssn, s, p, &pq) == -1) { printf("failed in segments reassembly, while processing toserver packet: "); goto end; @@ -6773,6 +6783,7 @@ end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); SCFree(p); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -6845,6 +6856,7 @@ static int StreamTcpReassembleTest43 (void) { TcpStream *s = NULL; s = &ssn.server; + SCMutexLock(&f->m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, &ssn, s, p, &pq) == -1) { printf("failed in segments reassembly, while processing toserver packet (1): "); goto end; @@ -6963,6 +6975,7 @@ end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); SCFree(p); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -7068,6 +7081,7 @@ static int StreamTcpReassembleTest45 (void) { TcpStream *s = NULL; s = &ssn.server; + SCMutexLock(&f->m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, &ssn, s, p, &pq) == -1) { printf("failed in segments reassembly, while processing toclient packet: "); goto end; @@ -7119,6 +7133,7 @@ end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); SCFree(p); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -7183,6 +7198,7 @@ static int StreamTcpReassembleTest46 (void) { TcpStream *s = NULL; s = &ssn.server; + SCMutexLock(&f->m); if (StreamTcpReassembleHandleSegment(&tv, ra_ctx, &ssn, s, p, &pq) == -1) { printf("failed in segments reassembly, while processing toclient packet\n"); goto end; @@ -7239,6 +7255,7 @@ end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); SCFree(p); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -7293,6 +7310,7 @@ static int StreamTcpReassembleTest47 (void) { TcpStream *s = NULL; uint8_t cnt = 0; + SCMutexLock(&f->m); for (cnt=0; cnt < httplen1; cnt++) { tcph.th_seq = htonl(ssn.client.isn + 1 + cnt); tcph.th_ack = htonl(572799782UL); @@ -7341,6 +7359,7 @@ end: StreamTcpReassembleFreeThreadCtx(ra_ctx); StreamTcpFreeConfig(TRUE); SCFree(p); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -7370,6 +7389,7 @@ static int StreamTcpReassembleInlineTest01(void) { p->tcph->th_seq = htonl(12); p->flow = &f; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -7411,6 +7431,7 @@ static int StreamTcpReassembleInlineTest01(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -7446,6 +7467,7 @@ static int StreamTcpReassembleInlineTest02(void) { p->tcph->th_seq = htonl(12); p->flow = &f; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -7518,6 +7540,7 @@ static int StreamTcpReassembleInlineTest02(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -7557,6 +7580,7 @@ static int StreamTcpReassembleInlineTest03(void) { p->flow = &f; p->flowflags |= FLOW_PKT_TOSERVER; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -7631,6 +7655,7 @@ static int StreamTcpReassembleInlineTest03(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -7670,6 +7695,7 @@ static int StreamTcpReassembleInlineTest04(void) { p->flow = &f; p->flowflags |= FLOW_PKT_TOSERVER; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -7744,6 +7770,7 @@ static int StreamTcpReassembleInlineTest04(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -7777,6 +7804,7 @@ static int StreamTcpReassembleInlineTest05(void) { p->tcph->th_seq = htonl(12); p->flow = &f; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -7835,6 +7863,7 @@ static int StreamTcpReassembleInlineTest05(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -7869,6 +7898,7 @@ static int StreamTcpReassembleInlineTest06(void) { p->tcph->th_seq = htonl(12); p->flow = &f; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -7960,6 +7990,7 @@ static int StreamTcpReassembleInlineTest06(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -7998,6 +8029,7 @@ static int StreamTcpReassembleInlineTest07(void) { p->flow = &f; p->flowflags |= FLOW_PKT_TOSERVER; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -8089,6 +8121,7 @@ static int StreamTcpReassembleInlineTest07(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -8130,6 +8163,7 @@ static int StreamTcpReassembleInlineTest08(void) { p->flow = &f; p->flowflags |= FLOW_PKT_TOSERVER; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -8219,6 +8253,7 @@ static int StreamTcpReassembleInlineTest08(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -8261,6 +8296,7 @@ static int StreamTcpReassembleInlineTest09(void) { p->flow = &f; p->flowflags |= FLOW_PKT_TOSERVER; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -8365,6 +8401,7 @@ static int StreamTcpReassembleInlineTest09(void) { ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn); @@ -8406,6 +8443,7 @@ static int StreamTcpReassembleInlineTest10(void) { p->flow = f; p->flowflags |= FLOW_PKT_TOSERVER; + SCMutexLock(&f->m); if (StreamTcpUTAddSegmentWithPayload(&tv, ra_ctx, &ssn.server, 2, stream_payload1, 2) == -1) { printf("failed to add segment 1: "); goto end; @@ -8450,6 +8488,7 @@ end: UTHFreePacket(p); StreamTcpUTClearSession(&ssn); StreamTcpUTDeinit(ra_ctx); + SCMutexUnlock(&f->m); UTHFreeFlow(f); return ret; } @@ -8480,6 +8519,7 @@ static int StreamTcpReassembleInsertTest01(void) { p->tcph->th_seq = htonl(12); p->flow = &f; + SCMutexLock(&f.m); if (StreamTcpUTAddSegmentWithByte(&tv, ra_ctx, &ssn.client, 2, 'A', 5) == -1) { printf("failed to add segment 1: "); goto end; @@ -8533,6 +8573,7 @@ static int StreamTcpReassembleInsertTest01(void) { } ret = 1; end: + SCMutexUnlock(&f.m); FLOW_DESTROY(&f); UTHFreePacket(p); StreamTcpUTClearSession(&ssn);