33 #include "../suricata-common.h"
35 #include "../flow-var.h"
36 #include "../flow-util.h"
38 #include "../app-layer.h"
39 #include "../app-layer-parser.h"
41 #include "../app-layer-htp.h"
42 #include "../detect-http-header.h"
43 #include "../detect-http-header-common.h"
44 #include "../detect-engine-build.h"
45 #include "../detect-engine-alert.h"
47 #include "../detect-isdataat.h"
49 #include "../stream-tcp.h"
51 #include "../util-unittest.h"
52 #include "../util-unittest-helper.h"
57 static int DetectHttpHeaderParserTest01(
void)
74 static int DetectHttpHeaderParserTest02(
void)
93 static int DetectHttpHeaderTest06(
void)
103 "GET /index.html HTTP/1.0\r\n"
104 "Host: www.openinfosecfoundation.org\r\n"
105 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
106 "Content-Type: text/html\r\n"
107 "Content-Length: 26\r\n"
109 "This is dummy message body\r\n";
110 uint32_t http_len =
sizeof(http_buf) - 1;
114 memset(&th_v, 0,
sizeof(th_v));
115 memset(&f, 0,
sizeof(f));
116 memset(&ssn, 0,
sizeof(ssn));
122 f.
proto = IPPROTO_TCP;
139 "(msg:\"http header test\"; "
140 "content:\"Content-Type: text/html\"; http_header; "
151 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
157 if (http_state == NULL) {
158 printf(
"no http state: ");
167 printf(
"sid 1 didn't match but should have: ");
175 if (det_ctx != NULL) {
192 static int DetectHttpHeaderTest07(
void)
200 uint8_t http1_buf[] =
201 "GET /index.html HTTP/1.0\r\n"
202 "Host: www.openinfosecfoundation.org\r\n"
204 uint8_t http2_buf[] =
205 "lla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\nContent-Type: text/html\r\n"
206 "Content-Length: 67\r\n"
208 "This is dummy message body1";
209 uint32_t http1_len =
sizeof(http1_buf) - 1;
210 uint32_t http2_len =
sizeof(http2_buf) - 1;
215 memset(&th_v, 0,
sizeof(th_v));
216 memset(&f, 0,
sizeof(f));
217 memset(&ssn, 0,
sizeof(ssn));
226 f.
proto = IPPROTO_TCP;
245 "(msg:\"http header test\"; "
246 "content:\"Mozilla\"; http_header; "
290 static int DetectHttpHeaderTest08(
void)
300 uint8_t http1_buf[] =
301 "GET /index.html HTTP/1.0\r\n"
302 "Host: www.openinfosecfoundation.org\r\n";
303 uint8_t http2_buf[] =
304 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
305 "Content-Type: text/html\r\n"
306 "Content-Length: 67\r\n"
308 uint32_t http1_len =
sizeof(http1_buf) - 1;
309 uint32_t http2_len =
sizeof(http2_buf) - 1;
313 memset(&th_v, 0,
sizeof(th_v));
314 memset(&f, 0,
sizeof(f));
315 memset(&ssn, 0,
sizeof(ssn));
322 f.
proto = IPPROTO_TCP;
343 "(msg:\"http header test\"; "
344 "content:\"Gecko/20091221 Firefox/3.5.7\"; http_header; "
355 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
361 if (http_state == NULL) {
362 printf(
"no http state: ");
371 printf(
"sid 1 didn't match but should have: ");
378 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
387 printf(
"sid 1 didn't match but should have: ");
395 if (det_ctx != NULL) {
413 static int DetectHttpHeaderTest09(
void)
423 uint8_t http1_buf[] =
424 "GET /index.html HTTP/1.0\r\n"
425 "Host: www.openinfosecfoundation.org\r\n"
426 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n";
427 uint8_t http2_buf[] =
428 "Content-Type: text/html\r\n"
429 "Content-Length: 67\r\n"
431 "This is dummy body\r\n";
432 uint32_t http1_len =
sizeof(http1_buf) - 1;
433 uint32_t http2_len =
sizeof(http2_buf) - 1;
437 memset(&th_v, 0,
sizeof(th_v));
438 memset(&f, 0,
sizeof(f));
439 memset(&ssn, 0,
sizeof(ssn));
446 f.
proto = IPPROTO_TCP;
468 "(msg:\"http header test\"; "
469 "content:\"Firefox/3.5.7|0D 0A|Content\"; http_header; "
480 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
486 if (http_state == NULL) {
487 printf(
"no http state: ");
496 printf(
"sid 1 matched but shouldn't have: ");
503 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
512 printf(
"sid 1 didn't match but should have: ");
520 if (det_ctx != NULL) {
538 static int DetectHttpHeaderTest10(
void)
548 uint8_t http1_buf[] =
549 "GET /index.html HTTP/1.0\r\n"
550 "Host: www.openinfosecfoundation.org\r\n"
551 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n";
552 uint8_t http2_buf[] =
553 "Content-Type: text/html\r\n"
554 "Content-Length: 67\r\n"
556 "This is dummy body";
557 uint32_t http1_len =
sizeof(http1_buf) - 1;
558 uint32_t http2_len =
sizeof(http2_buf) - 1;
562 memset(&th_v, 0,
sizeof(th_v));
563 memset(&f, 0,
sizeof(f));
564 memset(&ssn, 0,
sizeof(ssn));
571 f.
proto = IPPROTO_TCP;
592 "(msg:\"http header test\"; "
593 "content:\"firefox/3.5.7|0D 0A|content\"; nocase; http_header;"
604 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
610 if (http_state == NULL) {
611 printf(
"no http state: ");
620 printf(
"sid 1 didn't match but should have: ");
627 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
636 printf(
"sid 1 didn't match but should have: ");
644 if (det_ctx != NULL) {
662 static int DetectHttpHeaderTest11(
void)
672 "GET /index.html HTTP/1.0\r\n"
673 "Host: www.openinfosecfoundation.org\r\n"
674 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
675 "Content-Type: text/html\r\n"
676 "Content-Length: 26\r\n"
678 "This is dummy message body\r\n";
679 uint32_t http_len =
sizeof(http_buf) - 1;
683 memset(&th_v, 0,
sizeof(th_v));
684 memset(&f, 0,
sizeof(f));
685 memset(&ssn, 0,
sizeof(ssn));
691 f.
proto = IPPROTO_TCP;
708 "(msg:\"http header test\"; "
709 "content:!\"lalalalala\"; http_header; "
720 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
726 if (http_state == NULL) {
727 printf(
"no http state: ");
736 printf(
"sid 1 didn't match but should have: ");
744 if (det_ctx != NULL) {
761 static int DetectHttpHeaderTest12(
void)
771 "GET /index.html HTTP/1.0\r\n"
772 "Host: www.openinfosecfoundation.org\r\n"
773 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
774 "Content-Type: text/html\r\n"
775 "Content-Length: 26\r\n"
777 "This is dummy message body\r\n";
778 uint32_t http_len =
sizeof(http_buf) - 1;
782 memset(&th_v, 0,
sizeof(th_v));
783 memset(&f, 0,
sizeof(f));
784 memset(&ssn, 0,
sizeof(ssn));
790 f.
proto = IPPROTO_TCP;
807 "(msg:\"http header test\"; "
808 "content:!\"User-Agent: Mozilla/5.0 \"; http_header; "
819 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
825 if (http_state == NULL) {
826 printf(
"no http state: ");
835 printf(
"sid 1 didn't match but should have: ");
843 if (det_ctx != NULL) {
860 static int DetectHttpHeaderTest13(
void)
870 "GET /index.html HTTP/1.0\r\n"
871 "Host: www.openinfosecfoundation.org\r\n"
872 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
873 "Content-Type: text/html\r\n"
874 "Content-Length: 100\r\n"
876 "longbufferabcdefghijklmnopqrstuvwxyz0123456789bufferend\r\n";
877 uint32_t http_len =
sizeof(http_buf) - 1;
881 memset(&th_v, 0,
sizeof(th_v));
882 memset(&f, 0,
sizeof(f));
883 memset(&ssn, 0,
sizeof(ssn));
889 f.
proto = IPPROTO_TCP;
907 "(msg:\"http header test\"; "
908 "content:\"Host: www.openinfosecfoundation.org\"; http_header; "
919 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
925 if (http_state == NULL) {
926 printf(
"no http state: ");
935 printf(
"sid 1 didn't match but should have: ");
943 if (det_ctx != NULL) {
958 static int DetectHttpHeaderTest28(
void)
967 "POST http://xxx.intranet.local:8000/xxx HTTP/1.1\r\n"
968 "User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29\r\n"
969 "Host: xxx.intranet.local:8000\r\n"
971 uint32_t http_len =
sizeof(http_buf) - 1;
975 memset(&th_v, 0,
sizeof(th_v));
976 memset(&f, 0,
sizeof(f));
977 memset(&ssn, 0,
sizeof(ssn));
983 f.
proto = IPPROTO_TCP;
1000 "(app-layer-event:http.host_header_ambiguous; "
1011 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1020 printf(
"sid 1 matched but shouldnt have: ");
1028 if (det_ctx != NULL) {
1043 static int DetectHttpHeaderTest29(
void)
1051 uint8_t http_buf[] =
1052 "POST http://xxx.intranet.local:8001/xxx HTTP/1.1\r\n"
1053 "User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29\r\n"
1054 "Host: xxx.intranet.local:8000\r\n"
1056 uint32_t http_len =
sizeof(http_buf) - 1;
1060 memset(&th_v, 0,
sizeof(th_v));
1061 memset(&f, 0,
sizeof(f));
1062 memset(&ssn, 0,
sizeof(ssn));
1068 f.
proto = IPPROTO_TCP;
1085 "(app-layer-event:http.host_header_ambiguous; "
1096 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1105 printf(
"sid 1 didn't match but should have: ");
1113 if (det_ctx != NULL) {
1128 static int DetectHttpHeaderTest30(
void)
1136 uint8_t http_buf[] =
1137 "POST http://xxx.intranet.local:8000/xxx HTTP/1.1\r\n"
1138 "User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29\r\n"
1139 "Host: xyz.intranet.local:8000\r\n"
1141 uint32_t http_len =
sizeof(http_buf) - 1;
1145 memset(&th_v, 0,
sizeof(th_v));
1146 memset(&f, 0,
sizeof(f));
1147 memset(&ssn, 0,
sizeof(ssn));
1153 f.
proto = IPPROTO_TCP;
1170 "(app-layer-event:http.host_header_ambiguous; "
1181 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1190 printf(
"sid 1 didn't match but should have: ");
1198 if (det_ctx != NULL) {
1211 static int DetectHttpHeaderIsdataatParseTest(
void)
1218 "alert tcp any any -> any any ("
1220 "content:\"one\"; http_header; "
1221 "isdataat:!4,relative; sid:1;)");
1241 static int DetectEngineHttpHeaderTest01(
void)
1250 uint8_t http_buf[] =
1251 "GET /index.html HTTP/1.0\r\n"
1252 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1253 uint32_t http_len =
sizeof(http_buf) - 1;
1257 memset(&th_v, 0,
sizeof(th_v));
1258 memset(&f, 0,
sizeof(f));
1259 memset(&ssn, 0,
sizeof(ssn));
1265 f.
proto = IPPROTO_TCP;
1282 "(msg:\"http header test\"; "
1283 "content:\"one\"; http_header; "
1294 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1300 if (http_state == NULL) {
1301 printf(
"no http state: ");
1310 printf(
"sid 1 didn't match but should have: ");
1318 if (det_ctx != NULL) {
1335 static int DetectEngineHttpHeaderTest02(
void)
1344 uint8_t http_buf[] =
1345 "GET /index.html HTTP/1.0\r\n"
1346 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1347 uint32_t http_len =
sizeof(http_buf) - 1;
1351 memset(&th_v, 0,
sizeof(th_v));
1352 memset(&f, 0,
sizeof(f));
1353 memset(&ssn, 0,
sizeof(ssn));
1359 f.
proto = IPPROTO_TCP;
1376 "(msg:\"http header test\"; "
1377 "content:\"one\"; depth:15; http_header; "
1388 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1394 if (http_state == NULL) {
1395 printf(
"no http state: ");
1404 printf(
"sid 1 didn't match but should have: ");
1412 if (det_ctx != NULL) {
1429 static int DetectEngineHttpHeaderTest03(
void)
1438 uint8_t http_buf[] =
1439 "GET /index.html HTTP/1.0\r\n"
1440 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1441 uint32_t http_len =
sizeof(http_buf) - 1;
1445 memset(&th_v, 0,
sizeof(th_v));
1446 memset(&f, 0,
sizeof(f));
1447 memset(&ssn, 0,
sizeof(ssn));
1453 f.
proto = IPPROTO_TCP;
1470 "(msg:\"http header test\"; "
1471 "content:!\"one\"; depth:5; http_header; "
1482 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1488 if (http_state == NULL) {
1489 printf(
"no http state: ");
1498 printf(
"sid 1 didn't match but should have: ");
1506 if (det_ctx != NULL) {
1523 static int DetectEngineHttpHeaderTest04(
void)
1532 uint8_t http_buf[] =
1533 "GET /index.html HTTP/1.0\r\n"
1534 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1535 uint32_t http_len =
sizeof(http_buf) - 1;
1539 memset(&th_v, 0,
sizeof(th_v));
1540 memset(&f, 0,
sizeof(f));
1541 memset(&ssn, 0,
sizeof(ssn));
1547 f.
proto = IPPROTO_TCP;
1564 "(msg:\"http header test\"; "
1565 "content:\"one\"; depth:5; http_header; "
1576 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1582 if (http_state == NULL) {
1583 printf(
"no http state: ");
1592 printf(
"sid 1 matched but shouldn't have: ");
1600 if (det_ctx != NULL) {
1617 static int DetectEngineHttpHeaderTest05(
void)
1626 uint8_t http_buf[] =
1627 "GET /index.html HTTP/1.0\r\n"
1628 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1629 uint32_t http_len =
sizeof(http_buf) - 1;
1633 memset(&th_v, 0,
sizeof(th_v));
1634 memset(&f, 0,
sizeof(f));
1635 memset(&ssn, 0,
sizeof(ssn));
1641 f.
proto = IPPROTO_TCP;
1658 "(msg:\"http header test\"; "
1659 "content:!\"one\"; depth:15; http_header; "
1670 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1676 if (http_state == NULL) {
1677 printf(
"no http state: ");
1686 printf(
"sid 1 matched but shouldn't have: ");
1694 if (det_ctx != NULL) {
1711 static int DetectEngineHttpHeaderTest06(
void)
1720 uint8_t http_buf[] =
1721 "GET /index.html HTTP/1.0\r\n"
1722 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1723 uint32_t http_len =
sizeof(http_buf) - 1;
1727 memset(&th_v, 0,
sizeof(th_v));
1728 memset(&f, 0,
sizeof(f));
1729 memset(&ssn, 0,
sizeof(ssn));
1735 f.
proto = IPPROTO_TCP;
1752 "(msg:\"http header test\"; "
1753 "content:\"one\"; offset:10; http_header; "
1764 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1770 if (http_state == NULL) {
1771 printf(
"no http state: ");
1780 printf(
"sid 1 didn't match but should have: ");
1788 if (det_ctx != NULL) {
1805 static int DetectEngineHttpHeaderTest07(
void)
1814 uint8_t http_buf[] =
1815 "GET /index.html HTTP/1.0\r\n"
1816 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1817 uint32_t http_len =
sizeof(http_buf) - 1;
1821 memset(&th_v, 0,
sizeof(th_v));
1822 memset(&f, 0,
sizeof(f));
1823 memset(&ssn, 0,
sizeof(ssn));
1829 f.
proto = IPPROTO_TCP;
1846 "(msg:\"http header test\"; "
1847 "content:!\"one\"; offset:15; http_header; "
1858 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1864 if (http_state == NULL) {
1865 printf(
"no http state: ");
1874 printf(
"sid 1 didn't match but should have: ");
1882 if (det_ctx != NULL) {
1899 static int DetectEngineHttpHeaderTest08(
void)
1908 uint8_t http_buf[] =
1909 "GET /index.html HTTP/1.0\r\n"
1910 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1911 uint32_t http_len =
sizeof(http_buf) - 1;
1915 memset(&th_v, 0,
sizeof(th_v));
1916 memset(&f, 0,
sizeof(f));
1917 memset(&ssn, 0,
sizeof(ssn));
1923 f.
proto = IPPROTO_TCP;
1940 "(msg:\"http header test\"; "
1941 "content:\"one\"; offset:15; http_header; "
1952 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1958 if (http_state == NULL) {
1959 printf(
"no http state: ");
1968 printf(
"sid 1 matched but shouldn't have: ");
1976 if (det_ctx != NULL) {
1993 static int DetectEngineHttpHeaderTest09(
void)
2002 uint8_t http_buf[] =
2003 "GET /index.html HTTP/1.0\r\n"
2004 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2005 uint32_t http_len =
sizeof(http_buf) - 1;
2009 memset(&th_v, 0,
sizeof(th_v));
2010 memset(&f, 0,
sizeof(f));
2011 memset(&ssn, 0,
sizeof(ssn));
2017 f.
proto = IPPROTO_TCP;
2034 "(msg:\"http header test\"; "
2035 "content:!\"one\"; offset:10; http_header; "
2046 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2052 if (http_state == NULL) {
2053 printf(
"no http state: ");
2062 printf(
"sid 1 matched but shouldn't have: ");
2070 if (det_ctx != NULL) {
2087 static int DetectEngineHttpHeaderTest10(
void)
2096 uint8_t http_buf[] =
2097 "GET /index.html HTTP/1.0\r\n"
2098 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2099 uint32_t http_len =
sizeof(http_buf) - 1;
2103 memset(&th_v, 0,
sizeof(th_v));
2104 memset(&f, 0,
sizeof(f));
2105 memset(&ssn, 0,
sizeof(ssn));
2111 f.
proto = IPPROTO_TCP;
2128 "(msg:\"http header test\"; "
2129 "content:\"one\"; http_header; content:\"three\"; http_header; within:10; "
2140 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2146 if (http_state == NULL) {
2147 printf(
"no http state: ");
2156 printf(
"sid 1 didn't match but should have: ");
2164 if (det_ctx != NULL) {
2181 static int DetectEngineHttpHeaderTest11(
void)
2190 uint8_t http_buf[] =
2191 "GET /index.html HTTP/1.0\r\n"
2192 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2193 uint32_t http_len =
sizeof(http_buf) - 1;
2197 memset(&th_v, 0,
sizeof(th_v));
2198 memset(&f, 0,
sizeof(f));
2199 memset(&ssn, 0,
sizeof(ssn));
2205 f.
proto = IPPROTO_TCP;
2222 "(msg:\"http header test\"; "
2223 "content:\"one\"; http_header; content:!\"three\"; http_header; within:5; "
2234 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2240 if (http_state == NULL) {
2241 printf(
"no http state: ");
2250 printf(
"sid 1 didn't match but should have: ");
2258 if (det_ctx != NULL) {
2275 static int DetectEngineHttpHeaderTest12(
void)
2284 uint8_t http_buf[] =
2285 "GET /index.html HTTP/1.0\r\n"
2286 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2287 uint32_t http_len =
sizeof(http_buf) - 1;
2291 memset(&th_v, 0,
sizeof(th_v));
2292 memset(&f, 0,
sizeof(f));
2293 memset(&ssn, 0,
sizeof(ssn));
2299 f.
proto = IPPROTO_TCP;
2316 "(msg:\"http header test\"; "
2317 "content:\"one\"; http_header; content:!\"three\"; http_header; within:10; "
2328 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2334 if (http_state == NULL) {
2335 printf(
"no http state: ");
2344 printf(
"sid 1 matched but shouldn't have: ");
2352 if (det_ctx != NULL) {
2369 static int DetectEngineHttpHeaderTest13(
void)
2378 uint8_t http_buf[] =
2379 "GET /index.html HTTP/1.0\r\n"
2380 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2381 uint32_t http_len =
sizeof(http_buf) - 1;
2385 memset(&th_v, 0,
sizeof(th_v));
2386 memset(&f, 0,
sizeof(f));
2387 memset(&ssn, 0,
sizeof(ssn));
2393 f.
proto = IPPROTO_TCP;
2410 "(msg:\"http header test\"; "
2411 "content:\"one\"; http_header; content:\"three\"; http_header; within:5; "
2422 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2428 if (http_state == NULL) {
2429 printf(
"no http state: ");
2438 printf(
"sid 1 matched but shouldn't have: ");
2446 if (det_ctx != NULL) {
2463 static int DetectEngineHttpHeaderTest14(
void)
2472 uint8_t http_buf[] =
2473 "GET /index.html HTTP/1.0\r\n"
2474 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2475 uint32_t http_len =
sizeof(http_buf) - 1;
2479 memset(&th_v, 0,
sizeof(th_v));
2480 memset(&f, 0,
sizeof(f));
2481 memset(&ssn, 0,
sizeof(ssn));
2487 f.
proto = IPPROTO_TCP;
2504 "(msg:\"http header test\"; "
2505 "content:\"one\"; http_header; content:\"five\"; http_header; distance:7; "
2516 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2522 if (http_state == NULL) {
2523 printf(
"no http state: ");
2532 printf(
"sid 1 didn't match but should have: ");
2540 if (det_ctx != NULL) {
2557 static int DetectEngineHttpHeaderTest15(
void)
2566 uint8_t http_buf[] =
2567 "GET /index.html HTTP/1.0\r\n"
2568 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2569 uint32_t http_len =
sizeof(http_buf) - 1;
2573 memset(&th_v, 0,
sizeof(th_v));
2574 memset(&f, 0,
sizeof(f));
2575 memset(&ssn, 0,
sizeof(ssn));
2581 f.
proto = IPPROTO_TCP;
2598 "(msg:\"http header test\"; "
2599 "content:\"one\"; http_header; content:!\"five\"; http_header; distance:15; "
2610 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2616 if (http_state == NULL) {
2617 printf(
"no http state: ");
2626 printf(
"sid 1 didn't match but should have: ");
2634 if (det_ctx != NULL) {
2651 static int DetectEngineHttpHeaderTest16(
void)
2660 uint8_t http_buf[] =
2661 "GET /index.html HTTP/1.0\r\n"
2662 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2663 uint32_t http_len =
sizeof(http_buf) - 1;
2667 memset(&th_v, 0,
sizeof(th_v));
2668 memset(&f, 0,
sizeof(f));
2669 memset(&ssn, 0,
sizeof(ssn));
2675 f.
proto = IPPROTO_TCP;
2692 "(msg:\"http header test\"; "
2693 "content:\"one\"; http_header; content:!\"five\"; http_header; distance:7; "
2704 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2710 if (http_state == NULL) {
2711 printf(
"no http state: ");
2720 printf(
"sid 1 matched but shouldn't have: ");
2728 if (det_ctx != NULL) {
2745 static int DetectEngineHttpHeaderTest17(
void)
2754 uint8_t http_buf[] =
2755 "GET /index.html HTTP/1.0\r\n"
2756 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2757 uint32_t http_len =
sizeof(http_buf) - 1;
2761 memset(&th_v, 0,
sizeof(th_v));
2762 memset(&f, 0,
sizeof(f));
2763 memset(&ssn, 0,
sizeof(ssn));
2769 f.
proto = IPPROTO_TCP;
2786 "(msg:\"http header test\"; "
2787 "content:\"one\"; http_header; content:\"five\"; http_header; distance:15; "
2798 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2804 if (http_state == NULL) {
2805 printf(
"no http state: ");
2814 printf(
"sid 1 matched but shouldn't have: ");
2822 if (det_ctx != NULL) {
2835 static int DetectEngineHttpHeaderTest20(
void)
2845 uint8_t http1_buf[] =
2846 "GET /index.html HTTP/1.0\r\n"
2847 "Host: This_is_dummy_body1";
2848 uint8_t http2_buf[] =
2849 "This_is_dummy_message_body2\r\n"
2851 uint32_t http1_len =
sizeof(http1_buf) - 1;
2852 uint32_t http2_len =
sizeof(http2_buf) - 1;
2856 memset(&th_v, 0,
sizeof(th_v));
2857 memset(&f, 0,
sizeof(f));
2858 memset(&ssn, 0,
sizeof(ssn));
2865 f.
proto = IPPROTO_TCP;
2887 "(msg:\"http client body test\"; "
2889 "content:!\"dummy\"; http_header; within:7; "
2900 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2906 if (http_state == NULL) {
2907 printf(
"no http state: \n");
2916 printf(
"sid 1 matched but shouldn't have\n");
2923 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
2932 printf(
"sid 1 didn't match but shouldn't have");
2941 if (det_ctx != NULL) {
2955 static int DetectEngineHttpHeaderTest21(
void)
2965 uint8_t http1_buf[] =
2966 "GET /index.html HTTP/1.0\r\n"
2967 "Host: This_is_dummy_body1";
2968 uint8_t http2_buf[] =
2969 "This_is_dummy_message_body2\r\n"
2971 uint32_t http1_len =
sizeof(http1_buf) - 1;
2972 uint32_t http2_len =
sizeof(http2_buf) - 1;
2976 memset(&th_v, 0,
sizeof(th_v));
2977 memset(&f, 0,
sizeof(f));
2978 memset(&ssn, 0,
sizeof(ssn));
2985 f.
proto = IPPROTO_TCP;
3007 "(msg:\"http client body test\"; "
3009 "content:!\"dummy\"; within:7; http_header; "
3020 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3026 if (http_state == NULL) {
3027 printf(
"no http state: \n");
3036 printf(
"sid 1 matched but shouldn't have\n");
3043 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3052 printf(
"sid 1 didn't match but shouldn't have");
3061 if (det_ctx != NULL) {
3075 static int DetectEngineHttpHeaderTest22(
void)
3085 uint8_t http1_buf[] =
3086 "GET /index.html HTTP/1.0\r\n"
3087 "Host: This_is_dummy_body1";
3088 uint8_t http2_buf[] =
3089 "This_is_dummy_message_body2\r\n"
3091 uint32_t http1_len =
sizeof(http1_buf) - 1;
3092 uint32_t http2_len =
sizeof(http2_buf) - 1;
3096 memset(&th_v, 0,
sizeof(th_v));
3097 memset(&f, 0,
sizeof(f));
3098 memset(&ssn, 0,
sizeof(ssn));
3105 f.
proto = IPPROTO_TCP;
3127 "(msg:\"http client body test\"; "
3129 "content:!\"dummy\"; distance:3; http_header; "
3140 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3146 if (http_state == NULL) {
3147 printf(
"no http state: \n");
3156 printf(
"sid 1 matched but shouldn't have\n");
3163 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3172 printf(
"sid 1 matched but shouldn't have");
3181 if (det_ctx != NULL) {
3195 static int DetectEngineHttpHeaderTest23(
void)
3205 uint8_t http1_buf[] =
3206 "GET /index.html HTTP/1.0\r\n"
3207 "Host: This_is_dummy_body1";
3208 uint8_t http2_buf[] =
3209 "This_is_dummy_message_body2\r\n"
3211 uint32_t http1_len =
sizeof(http1_buf) - 1;
3212 uint32_t http2_len =
sizeof(http2_buf) - 1;
3216 memset(&th_v, 0,
sizeof(th_v));
3217 memset(&f, 0,
sizeof(f));
3218 memset(&ssn, 0,
sizeof(ssn));
3225 f.
proto = IPPROTO_TCP;
3247 "(msg:\"http client body test\"; "
3249 "content:!\"dummy\"; distance:13; http_header; "
3260 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3266 if (http_state == NULL) {
3267 printf(
"no http state: \n");
3276 printf(
"sid 1 matched but shouldn't have\n");
3283 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3292 printf(
"sid 1 didn't match but should have");
3301 if (det_ctx != NULL) {
3315 static int DetectEngineHttpHeaderTest24(
void)
3325 uint8_t http1_buf[] =
3326 "GET /index.html HTTP/1.0\r\n"
3327 "Host: This_is_dummy_body1";
3328 uint8_t http2_buf[] =
3329 "This_is_dummy_message_body2\r\n"
3331 uint32_t http1_len =
sizeof(http1_buf) - 1;
3332 uint32_t http2_len =
sizeof(http2_buf) - 1;
3336 memset(&th_v, 0,
sizeof(th_v));
3337 memset(&f, 0,
sizeof(f));
3338 memset(&ssn, 0,
sizeof(ssn));
3345 f.
proto = IPPROTO_TCP;
3367 "(msg:\"http client body test\"; "
3369 "content:\"dummy\"; within:15; http_header; "
3380 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3386 if (http_state == NULL) {
3387 printf(
"no http state: \n");
3396 printf(
"sid 1 matched but shouldn't have\n");
3403 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3412 printf(
"sid 1 didn't match but should have");
3421 if (det_ctx != NULL) {
3435 static int DetectEngineHttpHeaderTest25(
void)
3445 uint8_t http1_buf[] =
3446 "GET /index.html HTTP/1.0\r\n"
3447 "Host: This_is_dummy_body1";
3448 uint8_t http2_buf[] =
3449 "This_is_dummy_message_body2\r\n"
3451 uint32_t http1_len =
sizeof(http1_buf) - 1;
3452 uint32_t http2_len =
sizeof(http2_buf) - 1;
3456 memset(&th_v, 0,
sizeof(th_v));
3457 memset(&f, 0,
sizeof(f));
3458 memset(&ssn, 0,
sizeof(ssn));
3465 f.
proto = IPPROTO_TCP;
3487 "(msg:\"http client body test\"; "
3489 "content:\"dummy\"; within:10; http_header; "
3500 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3506 if (http_state == NULL) {
3507 printf(
"no http state: \n");
3516 printf(
"sid 1 matched but shouldn't have\n");
3523 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3532 printf(
"sid 1 matched but shouldn't have");
3541 if (det_ctx != NULL) {
3555 static int DetectEngineHttpHeaderTest26(
void)
3565 uint8_t http1_buf[] =
3566 "GET /index.html HTTP/1.0\r\n"
3567 "Host: This_is_dummy_body1";
3568 uint8_t http2_buf[] =
3569 "This_is_dummy_message_body2\r\n"
3571 uint32_t http1_len =
sizeof(http1_buf) - 1;
3572 uint32_t http2_len =
sizeof(http2_buf) - 1;
3576 memset(&th_v, 0,
sizeof(th_v));
3577 memset(&f, 0,
sizeof(f));
3578 memset(&ssn, 0,
sizeof(ssn));
3585 f.
proto = IPPROTO_TCP;
3607 "(msg:\"http client body test\"; "
3609 "content:\"dummy\"; distance:8; http_header; "
3620 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3626 if (http_state == NULL) {
3627 printf(
"no http state: \n");
3636 printf(
"sid 1 matched but shouldn't have\n");
3643 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3652 printf(
"sid 1 didn't match but should have");
3661 if (det_ctx != NULL) {
3675 static int DetectEngineHttpHeaderTest27(
void)
3685 uint8_t http1_buf[] =
3686 "GET /index.html HTTP/1.0\r\n"
3687 "Host: This_is_dummy_body1";
3688 uint8_t http2_buf[] =
3689 "This_is_dummy_message_body2\r\n"
3691 uint32_t http1_len =
sizeof(http1_buf) - 1;
3692 uint32_t http2_len =
sizeof(http2_buf) - 1;
3696 memset(&th_v, 0,
sizeof(th_v));
3697 memset(&f, 0,
sizeof(f));
3698 memset(&ssn, 0,
sizeof(ssn));
3705 f.
proto = IPPROTO_TCP;
3727 "(msg:\"http client body test\"; "
3729 "content:\"dummy\"; distance:14; http_header; "
3740 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3746 if (http_state == NULL) {
3747 printf(
"no http state: \n");
3756 printf(
"sid 1 matched but shouldn't have\n");
3763 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3772 printf(
"sid 1 matched but shouldn't have");
3781 if (det_ctx != NULL) {
3795 static int DetectEngineHttpHeaderTest28(
void)
3805 uint8_t http_buf1[] =
3806 "GET /index.html HTTP/1.0\r\n"
3807 "Host: www.openinfosecfoundation.org\r\n"
3808 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
3810 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
3811 uint8_t http_buf2[] =
3812 "HTTP/1.0 200 ok\r\n"
3813 "Content-Type: text/html\r\n"
3814 "Content-Length: 6\r\n"
3817 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
3821 memset(&th_v, 0,
sizeof(th_v));
3822 memset(&f, 0,
sizeof(f));
3823 memset(&ssn, 0,
sizeof(ssn));
3830 f.
proto = IPPROTO_TCP;
3852 "(msg:\"http header test\"; "
3853 "content:\"Content-Length: 6\"; http_header; "
3864 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3870 if (http_state == NULL) {
3871 printf(
"no http state: \n");
3880 printf(
"sid 1 matched but shouldn't have\n");
3887 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3902 if (det_ctx != NULL) {
3916 static int DetectEngineHttpHeaderTest29(
void)
3926 uint8_t http_buf1[] =
3927 "GET /index.html HTTP/1.0\r\n"
3928 "Host: www.openinfosecfoundation.org\r\n"
3929 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
3931 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
3932 uint8_t http_buf2[] =
3933 "HTTP/1.0 200 ok\r\n"
3934 "Content-Type: text/html\r\n"
3935 "Content-Length: 6\r\n"
3938 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
3942 memset(&th_v, 0,
sizeof(th_v));
3943 memset(&f, 0,
sizeof(f));
3944 memset(&ssn, 0,
sizeof(ssn));
3951 f.
proto = IPPROTO_TCP;
3973 "(msg:\"http header test\"; "
3974 "content:\"Content-Length: 7\"; http_header; "
3985 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3991 if (http_state == NULL) {
3992 printf(
"no http state: \n");
4001 printf(
"sid 1 matched but shouldn't have\n");
4008 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
4017 printf(
"sid 1 matched but shouldn't have");
4026 if (det_ctx != NULL) {
4042 static int DetectEngineHttpHeaderTest30(
void)
4052 "(msg:\"http header test\"; "
4053 "content:\"Content-Length: 6\"; http_header; "
4054 "content:\"User-Agent: Mozilla\"; http_header; "
4070 static int DetectEngineHttpHeaderTest30(
void)
4080 uint8_t http_buf1[] =
4081 "GET /index.html HTTP/1.0\r\n"
4082 "Host: www.openinfosecfoundation.org\r\n"
4083 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
4085 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
4086 uint8_t http_buf2[] =
4087 "HTTP/1.0 200 ok\r\n"
4088 "Set-Cookie: dummycookieset\r\n"
4089 "Content-Type: text/html\r\n"
4090 "Content-Length: 6\r\n"
4093 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
4097 memset(&th_v, 0,
sizeof(th_v));
4098 memset(&f, 0,
sizeof(f));
4099 memset(&ssn, 0,
sizeof(ssn));
4106 f.
proto = IPPROTO_TCP;
4128 "(msg:\"http header test\"; "
4129 "content:\"dummycookieset\"; http_header; "
4140 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
4146 if (http_state == NULL) {
4147 printf(
"no http state: \n");
4156 printf(
"sid 1 matched but shouldn't have\n");
4163 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
4172 printf(
"sid 1 matched but shouldn't have\n");
4181 if (det_ctx != NULL) {
4198 static int DetectEngineHttpHeaderTest31(
void)
4207 uint8_t http1_buf[] =
4208 "GET /index.html HTTP/1.0\r\n"
4212 "SixZix: blah\r\n\r\n";
4213 uint32_t http1_len =
sizeof(http1_buf) - 1;
4217 memset(&th_v, 0,
sizeof(th_v));
4218 memset(&f, 0,
sizeof(f));
4219 memset(&ssn, 0,
sizeof(ssn));
4225 f.
proto = IPPROTO_TCP;
4243 "(content:\"Accept|3a|\"; http_header; "
4244 "content:!\"Cookie|3a|\"; http_header; "
4245 "content:\"Crazy6|3a|\"; http_header; "
4246 "content:\"SixZix|3a|\"; http_header; "
4257 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
4263 if (http_state == NULL) {
4264 printf(
"no http state: \n");
4273 printf(
"sid 1 didn't match but should have: ");
4282 if (det_ctx != NULL) {
4298 static int DetectEngineHttpHeaderTest32(
void)
4307 uint8_t http1_buf[] =
4308 "GET /index.html HTTP/1.0\r\n"
4310 "Transfer-Encoding: chunked\r\n"
4313 "This is dummy body1\r\n"
4315 "Dummy-Header: kaboom\r\n"
4317 uint32_t http1_len =
sizeof(http1_buf) - 1;
4321 memset(&th_v, 0,
sizeof(th_v));
4322 memset(&f, 0,
sizeof(f));
4323 memset(&ssn, 0,
sizeof(ssn));
4329 f.
proto = IPPROTO_TCP;
4347 "(content:\"Dummy\"; http_header; "
4358 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
4364 if (http_state == NULL) {
4365 printf(
"no http state: \n");
4374 printf(
"sid 1 didn't match but should have: ");
4383 if (det_ctx != NULL) {
4399 static int DetectEngineHttpHeaderTest33(
void)
4409 uint8_t http1_buf[] =
4410 "GET /index.html HTTP/1.0\r\n"
4412 "Transfer-Encoding: chunked\r\n"
4415 "This is dummy body1\r\n"
4417 uint8_t http2_buf[] =
4418 "Dummy-Header: kaboom\r\n"
4420 uint32_t http1_len =
sizeof(http1_buf) - 1;
4421 uint32_t http2_len =
sizeof(http2_buf) - 1;
4426 memset(&th_v, 0,
sizeof(th_v));
4427 memset(&f, 0,
sizeof(f));
4428 memset(&ssn, 0,
sizeof(ssn));
4435 f.
proto = IPPROTO_TCP;
4455 "(content:\"Dummy\"; http_header; "
4498 static int DetectEngineHttpHeaderTest34(
void)
4506 uint8_t http1_buf[] =
4507 "GET /index.html HTTP/1.0\r\n"
4509 "Dummy-Header1: blah\r\n"
4510 "Transfer-Encoding: chunked\r\n"
4512 uint8_t http2_buf[] =
4514 "This is dummy body1\r\n"
4516 uint8_t http3_buf[] =
4517 "Dummy-Header2: kaboom\r\n"
4519 uint32_t http1_len =
sizeof(http1_buf) - 1;
4520 uint32_t http2_len =
sizeof(http2_buf) - 1;
4521 uint32_t http3_len =
sizeof(http3_buf) - 1;
4526 memset(&th_v, 0,
sizeof(th_v));
4527 memset(&f, 0,
sizeof(f));
4528 memset(&ssn, 0,
sizeof(ssn));
4536 f.
proto = IPPROTO_TCP;
4563 "(content:\"Dummy\"; http_header; content:\"Header2\"; http_header; within:8; "
4613 static int DetectEngineHttpHeaderTest35(
void)
4621 uint8_t http1_buf[] =
4622 "GET /index.html HTTP/1.0\r\n"
4624 "Dummy-Header1: blah\r\n"
4625 "Transfer-Encoding: chunked\r\n"
4627 uint8_t http2_buf[] =
4629 "This is dummy body1\r\n"
4631 uint8_t http3_buf[] =
4632 "Dummy-Header2: kaboom\r\n"
4634 uint32_t http1_len =
sizeof(http1_buf) - 1;
4635 uint32_t http2_len =
sizeof(http2_buf) - 1;
4636 uint32_t http3_len =
sizeof(http3_buf) - 1;
4641 memset(&th_v, 0,
sizeof(th_v));
4642 memset(&f, 0,
sizeof(f));
4643 memset(&ssn, 0,
sizeof(ssn));
4651 f.
proto = IPPROTO_TCP;
4678 "(content:\"Dummy\"; http_header; fast_pattern; content:\"Header2\"; http_header; within:8; "
4727 UtRegisterTest(
"DetectHttpHeaderParserTest01", DetectHttpHeaderParserTest01);
4728 UtRegisterTest(
"DetectHttpHeaderParserTest02", DetectHttpHeaderParserTest02);
4730 UtRegisterTest(
"DetectHttpHeaderTest06", DetectHttpHeaderTest06);
4731 UtRegisterTest(
"DetectHttpHeaderTest07", DetectHttpHeaderTest07);
4732 UtRegisterTest(
"DetectHttpHeaderTest08", DetectHttpHeaderTest08);
4733 UtRegisterTest(
"DetectHttpHeaderTest09", DetectHttpHeaderTest09);
4734 UtRegisterTest(
"DetectHttpHeaderTest10", DetectHttpHeaderTest10);
4735 UtRegisterTest(
"DetectHttpHeaderTest11", DetectHttpHeaderTest11);
4736 UtRegisterTest(
"DetectHttpHeaderTest12", DetectHttpHeaderTest12);
4737 UtRegisterTest(
"DetectHttpHeaderTest13", DetectHttpHeaderTest13);
4738 UtRegisterTest(
"DetectHttpHeaderTest28", DetectHttpHeaderTest28);
4739 UtRegisterTest(
"DetectHttpHeaderTest29", DetectHttpHeaderTest29);
4740 UtRegisterTest(
"DetectHttpHeaderTest30", DetectHttpHeaderTest30);
4743 DetectHttpHeaderIsdataatParseTest);
4746 DetectEngineHttpHeaderTest01);
4748 DetectEngineHttpHeaderTest02);
4750 DetectEngineHttpHeaderTest03);
4752 DetectEngineHttpHeaderTest04);
4754 DetectEngineHttpHeaderTest05);
4756 DetectEngineHttpHeaderTest06);
4758 DetectEngineHttpHeaderTest07);
4760 DetectEngineHttpHeaderTest08);
4762 DetectEngineHttpHeaderTest09);
4764 DetectEngineHttpHeaderTest10);
4766 DetectEngineHttpHeaderTest11);
4768 DetectEngineHttpHeaderTest12);
4770 DetectEngineHttpHeaderTest13);
4772 DetectEngineHttpHeaderTest14);
4774 DetectEngineHttpHeaderTest15);
4776 DetectEngineHttpHeaderTest16);
4778 DetectEngineHttpHeaderTest17);
4780 DetectEngineHttpHeaderTest20);
4782 DetectEngineHttpHeaderTest21);
4784 DetectEngineHttpHeaderTest22);
4786 DetectEngineHttpHeaderTest23);
4788 DetectEngineHttpHeaderTest24);
4790 DetectEngineHttpHeaderTest25);
4792 DetectEngineHttpHeaderTest26);
4794 DetectEngineHttpHeaderTest27);
4796 DetectEngineHttpHeaderTest28);
4798 DetectEngineHttpHeaderTest29);
4800 DetectEngineHttpHeaderTest30);
4802 DetectEngineHttpHeaderTest31);
4805 DetectEngineHttpHeaderTest30, 1);
4808 DetectEngineHttpHeaderTest32);
4810 DetectEngineHttpHeaderTest33);
4812 DetectEngineHttpHeaderTest34);
4814 DetectEngineHttpHeaderTest35);