diff --git a/src/app-layer-htp.c b/src/app-layer-htp.c index 045c3867bc..c53c12bc2b 100644 --- a/src/app-layer-htp.c +++ b/src/app-layer-htp.c @@ -247,10 +247,15 @@ static int HTPHandleRequestData(Flow *f, void *htp_state, SCLogDebug("Looking up HTP config for ipv4 %08x", *GET_IPV4_DST_ADDR_PTR(f)); cfgnode = SCRadixFindKeyIPV4BestMatch((uint8_t *)GET_IPV4_DST_ADDR_PTR(f), cfgtree); } - else { + else if (AF_INET6 == f->dst.family) { SCLogDebug("Looking up HTP config for ipv6"); cfgnode = SCRadixFindKeyIPV6BestMatch((uint8_t *)GET_IPV6_DST_ADDR(f), cfgtree); } + else { + SCLogError(SC_ERR_INVALID_ARGUMENT, "unknown address family, bug!"); + goto error; + } + if (cfgnode != NULL) { htp = SC_RADIX_NODE_USERDATA(cfgnode, HTPCfgRec)->cfg; SCLogDebug("LIBHTP using config: %p", htp); @@ -975,6 +980,8 @@ int HTPParserTest01(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -1043,6 +1050,8 @@ int HTPParserTest02(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -1098,6 +1107,8 @@ int HTPParserTest03(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -1163,6 +1174,8 @@ int HTPParserTest04(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -1226,6 +1239,8 @@ int HTPParserTest05(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -1368,7 +1383,10 @@ int HTPParserTest06(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); + f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); diff --git a/src/detect-http-client-body.c b/src/detect-http-client-body.c index a5c51644bc..bfb27e1229 100644 --- a/src/detect-http-client-body.c +++ b/src/detect-http-client-body.c @@ -433,6 +433,9 @@ static int DetectHttpClientBodyTest06(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -540,6 +543,9 @@ static int DetectHttpClientBodyTest07(void) p2.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p1.flow = &f; p1.flowflags |= FLOW_PKT_TOSERVER; p2.flow = &f; @@ -664,6 +670,9 @@ static int DetectHttpClientBodyTest08(void) p2.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p1.flow = &f; p1.flowflags |= FLOW_PKT_TOSERVER; p2.flow = &f; @@ -788,6 +797,9 @@ static int DetectHttpClientBodyTest09(void) p2.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p1.flow = &f; p1.flowflags |= FLOW_PKT_TOSERVER; p2.flow = &f; @@ -912,6 +924,9 @@ static int DetectHttpClientBodyTest10(void) p2.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p1.flow = &f; p1.flowflags |= FLOW_PKT_TOSERVER; p2.flow = &f; @@ -1025,6 +1040,9 @@ static int DetectHttpClientBodyTest11(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -1121,6 +1139,9 @@ static int DetectHttpClientBodyTest12(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -1217,6 +1238,9 @@ static int DetectHttpClientBodyTest13(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; diff --git a/src/detect-http-cookie.c b/src/detect-http-cookie.c index b685e65d27..1f8fdfc1f7 100644 --- a/src/detect-http-cookie.c +++ b/src/detect-http-cookie.c @@ -470,6 +470,9 @@ static int DetectHttpCookieSigTest01(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -566,6 +569,9 @@ static int DetectHttpCookieSigTest02(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -650,6 +656,9 @@ static int DetectHttpCookieSigTest03(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -734,6 +743,9 @@ static int DetectHttpCookieSigTest04(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -818,6 +830,9 @@ static int DetectHttpCookieSigTest05(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -902,6 +917,9 @@ static int DetectHttpCookieSigTest06(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -986,6 +1004,9 @@ static int DetectHttpCookieSigTest07(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; diff --git a/src/detect-http-method.c b/src/detect-http-method.c index c105335281..16db22e293 100644 --- a/src/detect-http-method.c +++ b/src/detect-http-method.c @@ -397,6 +397,9 @@ static int DetectHttpMethodSigTest01(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -494,6 +497,9 @@ static int DetectHttpMethodSigTest02(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -590,6 +596,9 @@ static int DetectHttpMethodSigTest03(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; diff --git a/src/detect-pcre.c b/src/detect-pcre.c index 65f12da33f..7b5e76b287 100644 --- a/src/detect-pcre.c +++ b/src/detect-pcre.c @@ -1041,6 +1041,9 @@ static int DetectPcreModifPTest04(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -1172,6 +1175,9 @@ static int DetectPcreModifPTest05(void) { p2.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p1.flow = &f; p1.flowflags |= FLOW_PKT_TOSERVER; p2.flow = &f; diff --git a/src/detect-uricontent.c b/src/detect-uricontent.c index fb9118e834..65af8af7a2 100644 --- a/src/detect-uricontent.c +++ b/src/detect-uricontent.c @@ -432,6 +432,8 @@ static int HTTPUriTest01(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -495,6 +497,8 @@ static int HTTPUriTest02(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -561,6 +565,8 @@ static int HTTPUriTest03(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -627,6 +633,8 @@ static int HTTPUriTest04(void) { memset(&f, 0, sizeof(f)); memset(&ssn, 0, sizeof(ssn)); f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; StreamTcpInitConfig(TRUE); StreamL7DataPtrInit(&ssn); @@ -752,6 +760,9 @@ static int DetectUriSigTest02(void) { p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -859,6 +870,8 @@ static int DetectUriSigTest03(void) { p.payload_len = httplen1; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -1145,6 +1158,8 @@ static int DetectUriSigTest05(void) { p.payload_len = httplen1; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -1253,6 +1268,8 @@ static int DetectUriSigTest06(void) { p.payload_len = httplen1; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -1368,6 +1385,8 @@ static int DetectUriSigTest07(void) { p.payload_len = httplen1; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; diff --git a/src/detect-urilen.c b/src/detect-urilen.c index b1e8790531..68277127f6 100644 --- a/src/detect-urilen.c +++ b/src/detect-urilen.c @@ -488,6 +488,9 @@ static int DetectUrilenSigTest01(void) p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; + p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; diff --git a/src/detect.c b/src/detect.c index 2e933dddfd..8c2a4e4067 100644 --- a/src/detect.c +++ b/src/detect.c @@ -3350,6 +3350,8 @@ static int SigTest06Real (int mpm_type) { p.payload_len = buflen; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -3443,6 +3445,8 @@ static int SigTest07Real (int mpm_type) { p.payload_len = buflen; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -3536,6 +3540,8 @@ static int SigTest08Real (int mpm_type) { p.payload_len = buflen; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; //FlowInit(&f, &p); @@ -3631,6 +3637,8 @@ static int SigTest09Real (int mpm_type) { p.payload_len = buflen; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -3717,6 +3725,8 @@ static int SigTest10Real (int mpm_type) { p.payload_len = buflen; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP; @@ -3805,6 +3815,8 @@ static int SigTest11Real (int mpm_type) { p.payload_len = buflen; p.proto = IPPROTO_TCP; f.protoctx = (void *)&ssn; + f.src.family = AF_INET; + f.dst.family = AF_INET; p.flow = &f; p.flowflags |= FLOW_PKT_TOSERVER; ssn.alproto = ALPROTO_HTTP;