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));
116 memset(&f, 0,
sizeof(f));
117 memset(&ssn, 0,
sizeof(ssn));
123 f.
proto = IPPROTO_TCP;
140 "(msg:\"http header test\"; "
141 "content:\"Content-Type: text/html\"; http_header; "
152 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
158 if (http_state == NULL) {
159 printf(
"no http state: ");
168 printf(
"sid 1 didn't match but should have: ");
176 if (det_ctx != NULL) {
193 static int DetectHttpHeaderTest07(
void)
201 uint8_t http1_buf[] =
202 "GET /index.html HTTP/1.0\r\n"
203 "Host: www.openinfosecfoundation.org\r\n"
205 uint8_t http2_buf[] =
206 "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"
207 "Content-Length: 67\r\n"
209 "This is dummy message body1";
210 uint32_t http1_len =
sizeof(http1_buf) - 1;
211 uint32_t http2_len =
sizeof(http2_buf) - 1;
216 memset(&th_v, 0,
sizeof(th_v));
218 memset(&f, 0,
sizeof(f));
219 memset(&ssn, 0,
sizeof(ssn));
228 f.
proto = IPPROTO_TCP;
247 "(msg:\"http header test\"; "
248 "content:\"Mozilla\"; http_header; "
292 static int DetectHttpHeaderTest08(
void)
302 uint8_t http1_buf[] =
303 "GET /index.html HTTP/1.0\r\n"
304 "Host: www.openinfosecfoundation.org\r\n";
305 uint8_t http2_buf[] =
306 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
307 "Content-Type: text/html\r\n"
308 "Content-Length: 67\r\n"
310 uint32_t http1_len =
sizeof(http1_buf) - 1;
311 uint32_t http2_len =
sizeof(http2_buf) - 1;
315 memset(&th_v, 0,
sizeof(th_v));
317 memset(&f, 0,
sizeof(f));
318 memset(&ssn, 0,
sizeof(ssn));
325 f.
proto = IPPROTO_TCP;
346 "(msg:\"http header test\"; "
347 "content:\"Gecko/20091221 Firefox/3.5.7\"; http_header; "
358 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
364 if (http_state == NULL) {
365 printf(
"no http state: ");
374 printf(
"sid 1 didn't match but should have: ");
381 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
390 printf(
"sid 1 didn't match but should have: ");
398 if (det_ctx != NULL) {
416 static int DetectHttpHeaderTest09(
void)
426 uint8_t http1_buf[] =
427 "GET /index.html HTTP/1.0\r\n"
428 "Host: www.openinfosecfoundation.org\r\n"
429 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n";
430 uint8_t http2_buf[] =
431 "Content-Type: text/html\r\n"
432 "Content-Length: 67\r\n"
434 "This is dummy body\r\n";
435 uint32_t http1_len =
sizeof(http1_buf) - 1;
436 uint32_t http2_len =
sizeof(http2_buf) - 1;
440 memset(&th_v, 0,
sizeof(th_v));
442 memset(&f, 0,
sizeof(f));
443 memset(&ssn, 0,
sizeof(ssn));
450 f.
proto = IPPROTO_TCP;
472 "(msg:\"http header test\"; "
473 "content:\"Firefox/3.5.7|0D 0A|Content\"; http_header; "
484 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
490 if (http_state == NULL) {
491 printf(
"no http state: ");
500 printf(
"sid 1 matched but shouldn't have: ");
507 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
516 printf(
"sid 1 didn't match but should have: ");
524 if (det_ctx != NULL) {
542 static int DetectHttpHeaderTest10(
void)
552 uint8_t http1_buf[] =
553 "GET /index.html HTTP/1.0\r\n"
554 "Host: www.openinfosecfoundation.org\r\n"
555 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n";
556 uint8_t http2_buf[] =
557 "Content-Type: text/html\r\n"
558 "Content-Length: 67\r\n"
560 "This is dummy body";
561 uint32_t http1_len =
sizeof(http1_buf) - 1;
562 uint32_t http2_len =
sizeof(http2_buf) - 1;
566 memset(&th_v, 0,
sizeof(th_v));
568 memset(&f, 0,
sizeof(f));
569 memset(&ssn, 0,
sizeof(ssn));
576 f.
proto = IPPROTO_TCP;
597 "(msg:\"http header test\"; "
598 "content:\"firefox/3.5.7|0D 0A|content\"; nocase; http_header;"
609 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
615 if (http_state == NULL) {
616 printf(
"no http state: ");
625 printf(
"sid 1 didn't match but should have: ");
632 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
641 printf(
"sid 1 didn't match but should have: ");
649 if (det_ctx != NULL) {
667 static int DetectHttpHeaderTest11(
void)
677 "GET /index.html HTTP/1.0\r\n"
678 "Host: www.openinfosecfoundation.org\r\n"
679 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
680 "Content-Type: text/html\r\n"
681 "Content-Length: 26\r\n"
683 "This is dummy message body\r\n";
684 uint32_t http_len =
sizeof(http_buf) - 1;
688 memset(&th_v, 0,
sizeof(th_v));
690 memset(&f, 0,
sizeof(f));
691 memset(&ssn, 0,
sizeof(ssn));
697 f.
proto = IPPROTO_TCP;
714 "(msg:\"http header test\"; "
715 "content:!\"lalalalala\"; http_header; "
726 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
732 if (http_state == NULL) {
733 printf(
"no http state: ");
742 printf(
"sid 1 didn't match but should have: ");
750 if (det_ctx != NULL) {
767 static int DetectHttpHeaderTest12(
void)
777 "GET /index.html HTTP/1.0\r\n"
778 "Host: www.openinfosecfoundation.org\r\n"
779 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
780 "Content-Type: text/html\r\n"
781 "Content-Length: 26\r\n"
783 "This is dummy message body\r\n";
784 uint32_t http_len =
sizeof(http_buf) - 1;
788 memset(&th_v, 0,
sizeof(th_v));
790 memset(&f, 0,
sizeof(f));
791 memset(&ssn, 0,
sizeof(ssn));
797 f.
proto = IPPROTO_TCP;
814 "(msg:\"http header test\"; "
815 "content:!\"User-Agent: Mozilla/5.0 \"; http_header; "
826 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
832 if (http_state == NULL) {
833 printf(
"no http state: ");
842 printf(
"sid 1 didn't match but should have: ");
850 if (det_ctx != NULL) {
867 static int DetectHttpHeaderTest13(
void)
877 "GET /index.html HTTP/1.0\r\n"
878 "Host: www.openinfosecfoundation.org\r\n"
879 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
880 "Content-Type: text/html\r\n"
881 "Content-Length: 100\r\n"
883 "longbufferabcdefghijklmnopqrstuvwxyz0123456789bufferend\r\n";
884 uint32_t http_len =
sizeof(http_buf) - 1;
888 memset(&th_v, 0,
sizeof(th_v));
890 memset(&f, 0,
sizeof(f));
891 memset(&ssn, 0,
sizeof(ssn));
897 f.
proto = IPPROTO_TCP;
915 "(msg:\"http header test\"; "
916 "content:\"Host: www.openinfosecfoundation.org\"; http_header; "
927 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
933 if (http_state == NULL) {
934 printf(
"no http state: ");
943 printf(
"sid 1 didn't match but should have: ");
951 if (det_ctx != NULL) {
966 static int DetectHttpHeaderTest28(
void)
975 "POST http://xxx.intranet.local:8000/xxx HTTP/1.1\r\n"
976 "User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29\r\n"
977 "Host: xxx.intranet.local:8000\r\n"
979 uint32_t http_len =
sizeof(http_buf) - 1;
983 memset(&th_v, 0,
sizeof(th_v));
985 memset(&f, 0,
sizeof(f));
986 memset(&ssn, 0,
sizeof(ssn));
992 f.
proto = IPPROTO_TCP;
1009 "(app-layer-event:http.host_header_ambiguous; "
1020 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1029 printf(
"sid 1 matched but shouldnt have: ");
1037 if (det_ctx != NULL) {
1052 static int DetectHttpHeaderTest29(
void)
1060 uint8_t http_buf[] =
1061 "POST http://xxx.intranet.local:8001/xxx HTTP/1.1\r\n"
1062 "User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29\r\n"
1063 "Host: xxx.intranet.local:8000\r\n"
1065 uint32_t http_len =
sizeof(http_buf) - 1;
1069 memset(&th_v, 0,
sizeof(th_v));
1071 memset(&f, 0,
sizeof(f));
1072 memset(&ssn, 0,
sizeof(ssn));
1078 f.
proto = IPPROTO_TCP;
1095 "(app-layer-event:http.host_header_ambiguous; "
1106 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1115 printf(
"sid 1 didn't match but should have: ");
1123 if (det_ctx != NULL) {
1138 static int DetectHttpHeaderTest30(
void)
1146 uint8_t http_buf[] =
1147 "POST http://xxx.intranet.local:8000/xxx HTTP/1.1\r\n"
1148 "User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29\r\n"
1149 "Host: xyz.intranet.local:8000\r\n"
1151 uint32_t http_len =
sizeof(http_buf) - 1;
1155 memset(&th_v, 0,
sizeof(th_v));
1157 memset(&f, 0,
sizeof(f));
1158 memset(&ssn, 0,
sizeof(ssn));
1164 f.
proto = IPPROTO_TCP;
1181 "(app-layer-event:http.host_header_ambiguous; "
1192 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1201 printf(
"sid 1 didn't match but should have: ");
1209 if (det_ctx != NULL) {
1222 static int DetectHttpHeaderIsdataatParseTest(
void)
1229 "alert tcp any any -> any any ("
1231 "content:\"one\"; http_header; "
1232 "isdataat:!4,relative; sid:1;)");
1252 static int DetectEngineHttpHeaderTest01(
void)
1261 uint8_t http_buf[] =
1262 "GET /index.html HTTP/1.0\r\n"
1263 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1264 uint32_t http_len =
sizeof(http_buf) - 1;
1268 memset(&th_v, 0,
sizeof(th_v));
1270 memset(&f, 0,
sizeof(f));
1271 memset(&ssn, 0,
sizeof(ssn));
1277 f.
proto = IPPROTO_TCP;
1294 "(msg:\"http header test\"; "
1295 "content:\"one\"; http_header; "
1306 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1312 if (http_state == NULL) {
1313 printf(
"no http state: ");
1322 printf(
"sid 1 didn't match but should have: ");
1330 if (det_ctx != NULL) {
1347 static int DetectEngineHttpHeaderTest02(
void)
1356 uint8_t http_buf[] =
1357 "GET /index.html HTTP/1.0\r\n"
1358 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1359 uint32_t http_len =
sizeof(http_buf) - 1;
1363 memset(&th_v, 0,
sizeof(th_v));
1365 memset(&f, 0,
sizeof(f));
1366 memset(&ssn, 0,
sizeof(ssn));
1372 f.
proto = IPPROTO_TCP;
1389 "(msg:\"http header test\"; "
1390 "content:\"one\"; depth:15; http_header; "
1401 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1407 if (http_state == NULL) {
1408 printf(
"no http state: ");
1417 printf(
"sid 1 didn't match but should have: ");
1425 if (det_ctx != NULL) {
1442 static int DetectEngineHttpHeaderTest03(
void)
1451 uint8_t http_buf[] =
1452 "GET /index.html HTTP/1.0\r\n"
1453 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1454 uint32_t http_len =
sizeof(http_buf) - 1;
1458 memset(&th_v, 0,
sizeof(th_v));
1460 memset(&f, 0,
sizeof(f));
1461 memset(&ssn, 0,
sizeof(ssn));
1467 f.
proto = IPPROTO_TCP;
1484 "(msg:\"http header test\"; "
1485 "content:!\"one\"; depth:5; http_header; "
1496 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1502 if (http_state == NULL) {
1503 printf(
"no http state: ");
1512 printf(
"sid 1 didn't match but should have: ");
1520 if (det_ctx != NULL) {
1537 static int DetectEngineHttpHeaderTest04(
void)
1546 uint8_t http_buf[] =
1547 "GET /index.html HTTP/1.0\r\n"
1548 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1549 uint32_t http_len =
sizeof(http_buf) - 1;
1553 memset(&th_v, 0,
sizeof(th_v));
1555 memset(&f, 0,
sizeof(f));
1556 memset(&ssn, 0,
sizeof(ssn));
1562 f.
proto = IPPROTO_TCP;
1579 "(msg:\"http header test\"; "
1580 "content:\"one\"; depth:5; http_header; "
1591 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1597 if (http_state == NULL) {
1598 printf(
"no http state: ");
1607 printf(
"sid 1 matched but shouldn't have: ");
1615 if (det_ctx != NULL) {
1632 static int DetectEngineHttpHeaderTest05(
void)
1641 uint8_t http_buf[] =
1642 "GET /index.html HTTP/1.0\r\n"
1643 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1644 uint32_t http_len =
sizeof(http_buf) - 1;
1648 memset(&th_v, 0,
sizeof(th_v));
1650 memset(&f, 0,
sizeof(f));
1651 memset(&ssn, 0,
sizeof(ssn));
1657 f.
proto = IPPROTO_TCP;
1674 "(msg:\"http header test\"; "
1675 "content:!\"one\"; depth:15; http_header; "
1686 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1692 if (http_state == NULL) {
1693 printf(
"no http state: ");
1702 printf(
"sid 1 matched but shouldn't have: ");
1710 if (det_ctx != NULL) {
1727 static int DetectEngineHttpHeaderTest06(
void)
1736 uint8_t http_buf[] =
1737 "GET /index.html HTTP/1.0\r\n"
1738 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1739 uint32_t http_len =
sizeof(http_buf) - 1;
1743 memset(&th_v, 0,
sizeof(th_v));
1745 memset(&f, 0,
sizeof(f));
1746 memset(&ssn, 0,
sizeof(ssn));
1752 f.
proto = IPPROTO_TCP;
1769 "(msg:\"http header test\"; "
1770 "content:\"one\"; offset:10; http_header; "
1781 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1787 if (http_state == NULL) {
1788 printf(
"no http state: ");
1797 printf(
"sid 1 didn't match but should have: ");
1805 if (det_ctx != NULL) {
1822 static int DetectEngineHttpHeaderTest07(
void)
1831 uint8_t http_buf[] =
1832 "GET /index.html HTTP/1.0\r\n"
1833 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1834 uint32_t http_len =
sizeof(http_buf) - 1;
1838 memset(&th_v, 0,
sizeof(th_v));
1840 memset(&f, 0,
sizeof(f));
1841 memset(&ssn, 0,
sizeof(ssn));
1847 f.
proto = IPPROTO_TCP;
1864 "(msg:\"http header test\"; "
1865 "content:!\"one\"; offset:15; http_header; "
1876 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1882 if (http_state == NULL) {
1883 printf(
"no http state: ");
1892 printf(
"sid 1 didn't match but should have: ");
1900 if (det_ctx != NULL) {
1917 static int DetectEngineHttpHeaderTest08(
void)
1926 uint8_t http_buf[] =
1927 "GET /index.html HTTP/1.0\r\n"
1928 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1929 uint32_t http_len =
sizeof(http_buf) - 1;
1933 memset(&th_v, 0,
sizeof(th_v));
1935 memset(&f, 0,
sizeof(f));
1936 memset(&ssn, 0,
sizeof(ssn));
1942 f.
proto = IPPROTO_TCP;
1959 "(msg:\"http header test\"; "
1960 "content:\"one\"; offset:15; http_header; "
1971 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
1977 if (http_state == NULL) {
1978 printf(
"no http state: ");
1987 printf(
"sid 1 matched but shouldn't have: ");
1995 if (det_ctx != NULL) {
2012 static int DetectEngineHttpHeaderTest09(
void)
2021 uint8_t http_buf[] =
2022 "GET /index.html HTTP/1.0\r\n"
2023 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2024 uint32_t http_len =
sizeof(http_buf) - 1;
2028 memset(&th_v, 0,
sizeof(th_v));
2030 memset(&f, 0,
sizeof(f));
2031 memset(&ssn, 0,
sizeof(ssn));
2037 f.
proto = IPPROTO_TCP;
2054 "(msg:\"http header test\"; "
2055 "content:!\"one\"; offset:10; http_header; "
2066 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2072 if (http_state == NULL) {
2073 printf(
"no http state: ");
2082 printf(
"sid 1 matched but shouldn't have: ");
2090 if (det_ctx != NULL) {
2107 static int DetectEngineHttpHeaderTest10(
void)
2116 uint8_t http_buf[] =
2117 "GET /index.html HTTP/1.0\r\n"
2118 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2119 uint32_t http_len =
sizeof(http_buf) - 1;
2123 memset(&th_v, 0,
sizeof(th_v));
2125 memset(&f, 0,
sizeof(f));
2126 memset(&ssn, 0,
sizeof(ssn));
2132 f.
proto = IPPROTO_TCP;
2149 "(msg:\"http header test\"; "
2150 "content:\"one\"; http_header; content:\"three\"; http_header; within:10; "
2161 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2167 if (http_state == NULL) {
2168 printf(
"no http state: ");
2177 printf(
"sid 1 didn't match but should have: ");
2185 if (det_ctx != NULL) {
2202 static int DetectEngineHttpHeaderTest11(
void)
2211 uint8_t http_buf[] =
2212 "GET /index.html HTTP/1.0\r\n"
2213 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2214 uint32_t http_len =
sizeof(http_buf) - 1;
2218 memset(&th_v, 0,
sizeof(th_v));
2220 memset(&f, 0,
sizeof(f));
2221 memset(&ssn, 0,
sizeof(ssn));
2227 f.
proto = IPPROTO_TCP;
2244 "(msg:\"http header test\"; "
2245 "content:\"one\"; http_header; content:!\"three\"; http_header; within:5; "
2256 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2262 if (http_state == NULL) {
2263 printf(
"no http state: ");
2272 printf(
"sid 1 didn't match but should have: ");
2280 if (det_ctx != NULL) {
2297 static int DetectEngineHttpHeaderTest12(
void)
2306 uint8_t http_buf[] =
2307 "GET /index.html HTTP/1.0\r\n"
2308 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2309 uint32_t http_len =
sizeof(http_buf) - 1;
2313 memset(&th_v, 0,
sizeof(th_v));
2315 memset(&f, 0,
sizeof(f));
2316 memset(&ssn, 0,
sizeof(ssn));
2322 f.
proto = IPPROTO_TCP;
2339 "(msg:\"http header test\"; "
2340 "content:\"one\"; http_header; content:!\"three\"; http_header; within:10; "
2351 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2357 if (http_state == NULL) {
2358 printf(
"no http state: ");
2367 printf(
"sid 1 matched but shouldn't have: ");
2375 if (det_ctx != NULL) {
2392 static int DetectEngineHttpHeaderTest13(
void)
2401 uint8_t http_buf[] =
2402 "GET /index.html HTTP/1.0\r\n"
2403 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2404 uint32_t http_len =
sizeof(http_buf) - 1;
2408 memset(&th_v, 0,
sizeof(th_v));
2410 memset(&f, 0,
sizeof(f));
2411 memset(&ssn, 0,
sizeof(ssn));
2417 f.
proto = IPPROTO_TCP;
2434 "(msg:\"http header test\"; "
2435 "content:\"one\"; http_header; content:\"three\"; http_header; within:5; "
2446 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2452 if (http_state == NULL) {
2453 printf(
"no http state: ");
2462 printf(
"sid 1 matched but shouldn't have: ");
2470 if (det_ctx != NULL) {
2487 static int DetectEngineHttpHeaderTest14(
void)
2496 uint8_t http_buf[] =
2497 "GET /index.html HTTP/1.0\r\n"
2498 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2499 uint32_t http_len =
sizeof(http_buf) - 1;
2503 memset(&th_v, 0,
sizeof(th_v));
2505 memset(&f, 0,
sizeof(f));
2506 memset(&ssn, 0,
sizeof(ssn));
2512 f.
proto = IPPROTO_TCP;
2529 "(msg:\"http header test\"; "
2530 "content:\"one\"; http_header; content:\"five\"; http_header; distance:7; "
2541 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2547 if (http_state == NULL) {
2548 printf(
"no http state: ");
2557 printf(
"sid 1 didn't match but should have: ");
2565 if (det_ctx != NULL) {
2582 static int DetectEngineHttpHeaderTest15(
void)
2591 uint8_t http_buf[] =
2592 "GET /index.html HTTP/1.0\r\n"
2593 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2594 uint32_t http_len =
sizeof(http_buf) - 1;
2598 memset(&th_v, 0,
sizeof(th_v));
2600 memset(&f, 0,
sizeof(f));
2601 memset(&ssn, 0,
sizeof(ssn));
2607 f.
proto = IPPROTO_TCP;
2624 "(msg:\"http header test\"; "
2625 "content:\"one\"; http_header; content:!\"five\"; http_header; distance:15; "
2636 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2642 if (http_state == NULL) {
2643 printf(
"no http state: ");
2652 printf(
"sid 1 didn't match but should have: ");
2660 if (det_ctx != NULL) {
2677 static int DetectEngineHttpHeaderTest16(
void)
2686 uint8_t http_buf[] =
2687 "GET /index.html HTTP/1.0\r\n"
2688 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2689 uint32_t http_len =
sizeof(http_buf) - 1;
2693 memset(&th_v, 0,
sizeof(th_v));
2695 memset(&f, 0,
sizeof(f));
2696 memset(&ssn, 0,
sizeof(ssn));
2702 f.
proto = IPPROTO_TCP;
2719 "(msg:\"http header test\"; "
2720 "content:\"one\"; http_header; content:!\"five\"; http_header; distance:7; "
2731 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2737 if (http_state == NULL) {
2738 printf(
"no http state: ");
2747 printf(
"sid 1 matched but shouldn't have: ");
2755 if (det_ctx != NULL) {
2772 static int DetectEngineHttpHeaderTest17(
void)
2781 uint8_t http_buf[] =
2782 "GET /index.html HTTP/1.0\r\n"
2783 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
2784 uint32_t http_len =
sizeof(http_buf) - 1;
2788 memset(&th_v, 0,
sizeof(th_v));
2790 memset(&f, 0,
sizeof(f));
2791 memset(&ssn, 0,
sizeof(ssn));
2797 f.
proto = IPPROTO_TCP;
2814 "(msg:\"http header test\"; "
2815 "content:\"one\"; http_header; content:\"five\"; http_header; distance:15; "
2826 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2832 if (http_state == NULL) {
2833 printf(
"no http state: ");
2842 printf(
"sid 1 matched but shouldn't have: ");
2850 if (det_ctx != NULL) {
2863 static int DetectEngineHttpHeaderTest20(
void)
2873 uint8_t http1_buf[] =
2874 "GET /index.html HTTP/1.0\r\n"
2875 "Host: This_is_dummy_body1";
2876 uint8_t http2_buf[] =
2877 "This_is_dummy_message_body2\r\n"
2879 uint32_t http1_len =
sizeof(http1_buf) - 1;
2880 uint32_t http2_len =
sizeof(http2_buf) - 1;
2884 memset(&th_v, 0,
sizeof(th_v));
2886 memset(&f, 0,
sizeof(f));
2887 memset(&ssn, 0,
sizeof(ssn));
2894 f.
proto = IPPROTO_TCP;
2916 "(msg:\"http client body test\"; "
2918 "content:!\"dummy\"; http_header; within:7; "
2929 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
2935 if (http_state == NULL) {
2936 printf(
"no http state: \n");
2945 printf(
"sid 1 matched but shouldn't have\n");
2952 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
2961 printf(
"sid 1 didn't match but shouldn't have");
2970 if (det_ctx != NULL) {
2984 static int DetectEngineHttpHeaderTest21(
void)
2994 uint8_t http1_buf[] =
2995 "GET /index.html HTTP/1.0\r\n"
2996 "Host: This_is_dummy_body1";
2997 uint8_t http2_buf[] =
2998 "This_is_dummy_message_body2\r\n"
3000 uint32_t http1_len =
sizeof(http1_buf) - 1;
3001 uint32_t http2_len =
sizeof(http2_buf) - 1;
3005 memset(&th_v, 0,
sizeof(th_v));
3007 memset(&f, 0,
sizeof(f));
3008 memset(&ssn, 0,
sizeof(ssn));
3015 f.
proto = IPPROTO_TCP;
3037 "(msg:\"http client body test\"; "
3039 "content:!\"dummy\"; within:7; http_header; "
3050 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3056 if (http_state == NULL) {
3057 printf(
"no http state: \n");
3066 printf(
"sid 1 matched but shouldn't have\n");
3073 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3082 printf(
"sid 1 didn't match but shouldn't have");
3091 if (det_ctx != NULL) {
3105 static int DetectEngineHttpHeaderTest22(
void)
3115 uint8_t http1_buf[] =
3116 "GET /index.html HTTP/1.0\r\n"
3117 "Host: This_is_dummy_body1";
3118 uint8_t http2_buf[] =
3119 "This_is_dummy_message_body2\r\n"
3121 uint32_t http1_len =
sizeof(http1_buf) - 1;
3122 uint32_t http2_len =
sizeof(http2_buf) - 1;
3126 memset(&th_v, 0,
sizeof(th_v));
3128 memset(&f, 0,
sizeof(f));
3129 memset(&ssn, 0,
sizeof(ssn));
3136 f.
proto = IPPROTO_TCP;
3158 "(msg:\"http client body test\"; "
3160 "content:!\"dummy\"; distance:3; http_header; "
3171 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3177 if (http_state == NULL) {
3178 printf(
"no http state: \n");
3187 printf(
"sid 1 matched but shouldn't have\n");
3194 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3203 printf(
"sid 1 matched but shouldn't have");
3212 if (det_ctx != NULL) {
3226 static int DetectEngineHttpHeaderTest23(
void)
3236 uint8_t http1_buf[] =
3237 "GET /index.html HTTP/1.0\r\n"
3238 "Host: This_is_dummy_body1";
3239 uint8_t http2_buf[] =
3240 "This_is_dummy_message_body2\r\n"
3242 uint32_t http1_len =
sizeof(http1_buf) - 1;
3243 uint32_t http2_len =
sizeof(http2_buf) - 1;
3247 memset(&th_v, 0,
sizeof(th_v));
3249 memset(&f, 0,
sizeof(f));
3250 memset(&ssn, 0,
sizeof(ssn));
3257 f.
proto = IPPROTO_TCP;
3279 "(msg:\"http client body test\"; "
3281 "content:!\"dummy\"; distance:13; http_header; "
3292 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3298 if (http_state == NULL) {
3299 printf(
"no http state: \n");
3308 printf(
"sid 1 matched but shouldn't have\n");
3315 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3324 printf(
"sid 1 didn't match but should have");
3333 if (det_ctx != NULL) {
3347 static int DetectEngineHttpHeaderTest24(
void)
3357 uint8_t http1_buf[] =
3358 "GET /index.html HTTP/1.0\r\n"
3359 "Host: This_is_dummy_body1";
3360 uint8_t http2_buf[] =
3361 "This_is_dummy_message_body2\r\n"
3363 uint32_t http1_len =
sizeof(http1_buf) - 1;
3364 uint32_t http2_len =
sizeof(http2_buf) - 1;
3368 memset(&th_v, 0,
sizeof(th_v));
3370 memset(&f, 0,
sizeof(f));
3371 memset(&ssn, 0,
sizeof(ssn));
3378 f.
proto = IPPROTO_TCP;
3400 "(msg:\"http client body test\"; "
3402 "content:\"dummy\"; within:15; http_header; "
3413 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3419 if (http_state == NULL) {
3420 printf(
"no http state: \n");
3429 printf(
"sid 1 matched but shouldn't have\n");
3436 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3445 printf(
"sid 1 didn't match but should have");
3454 if (det_ctx != NULL) {
3468 static int DetectEngineHttpHeaderTest25(
void)
3478 uint8_t http1_buf[] =
3479 "GET /index.html HTTP/1.0\r\n"
3480 "Host: This_is_dummy_body1";
3481 uint8_t http2_buf[] =
3482 "This_is_dummy_message_body2\r\n"
3484 uint32_t http1_len =
sizeof(http1_buf) - 1;
3485 uint32_t http2_len =
sizeof(http2_buf) - 1;
3489 memset(&th_v, 0,
sizeof(th_v));
3491 memset(&f, 0,
sizeof(f));
3492 memset(&ssn, 0,
sizeof(ssn));
3499 f.
proto = IPPROTO_TCP;
3521 "(msg:\"http client body test\"; "
3523 "content:\"dummy\"; within:10; http_header; "
3534 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3540 if (http_state == NULL) {
3541 printf(
"no http state: \n");
3550 printf(
"sid 1 matched but shouldn't have\n");
3557 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3566 printf(
"sid 1 matched but shouldn't have");
3575 if (det_ctx != NULL) {
3589 static int DetectEngineHttpHeaderTest26(
void)
3599 uint8_t http1_buf[] =
3600 "GET /index.html HTTP/1.0\r\n"
3601 "Host: This_is_dummy_body1";
3602 uint8_t http2_buf[] =
3603 "This_is_dummy_message_body2\r\n"
3605 uint32_t http1_len =
sizeof(http1_buf) - 1;
3606 uint32_t http2_len =
sizeof(http2_buf) - 1;
3610 memset(&th_v, 0,
sizeof(th_v));
3612 memset(&f, 0,
sizeof(f));
3613 memset(&ssn, 0,
sizeof(ssn));
3620 f.
proto = IPPROTO_TCP;
3642 "(msg:\"http client body test\"; "
3644 "content:\"dummy\"; distance:8; http_header; "
3655 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3661 if (http_state == NULL) {
3662 printf(
"no http state: \n");
3671 printf(
"sid 1 matched but shouldn't have\n");
3678 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3687 printf(
"sid 1 didn't match but should have");
3696 if (det_ctx != NULL) {
3710 static int DetectEngineHttpHeaderTest27(
void)
3720 uint8_t http1_buf[] =
3721 "GET /index.html HTTP/1.0\r\n"
3722 "Host: This_is_dummy_body1";
3723 uint8_t http2_buf[] =
3724 "This_is_dummy_message_body2\r\n"
3726 uint32_t http1_len =
sizeof(http1_buf) - 1;
3727 uint32_t http2_len =
sizeof(http2_buf) - 1;
3731 memset(&th_v, 0,
sizeof(th_v));
3733 memset(&f, 0,
sizeof(f));
3734 memset(&ssn, 0,
sizeof(ssn));
3741 f.
proto = IPPROTO_TCP;
3763 "(msg:\"http client body test\"; "
3765 "content:\"dummy\"; distance:14; http_header; "
3776 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3782 if (http_state == NULL) {
3783 printf(
"no http state: \n");
3792 printf(
"sid 1 matched but shouldn't have\n");
3799 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3808 printf(
"sid 1 matched but shouldn't have");
3817 if (det_ctx != NULL) {
3831 static int DetectEngineHttpHeaderTest28(
void)
3841 uint8_t http_buf1[] =
3842 "GET /index.html HTTP/1.0\r\n"
3843 "Host: www.openinfosecfoundation.org\r\n"
3844 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
3846 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
3847 uint8_t http_buf2[] =
3848 "HTTP/1.0 200 ok\r\n"
3849 "Content-Type: text/html\r\n"
3850 "Content-Length: 6\r\n"
3853 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
3857 memset(&th_v, 0,
sizeof(th_v));
3859 memset(&f, 0,
sizeof(f));
3860 memset(&ssn, 0,
sizeof(ssn));
3867 f.
proto = IPPROTO_TCP;
3889 "(msg:\"http header test\"; "
3890 "content:\"Content-Length: 6\"; http_header; "
3901 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
3907 if (http_state == NULL) {
3908 printf(
"no http state: \n");
3917 printf(
"sid 1 matched but shouldn't have\n");
3924 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
3939 if (det_ctx != NULL) {
3953 static int DetectEngineHttpHeaderTest29(
void)
3963 uint8_t http_buf1[] =
3964 "GET /index.html HTTP/1.0\r\n"
3965 "Host: www.openinfosecfoundation.org\r\n"
3966 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
3968 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
3969 uint8_t http_buf2[] =
3970 "HTTP/1.0 200 ok\r\n"
3971 "Content-Type: text/html\r\n"
3972 "Content-Length: 6\r\n"
3975 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
3979 memset(&th_v, 0,
sizeof(th_v));
3981 memset(&f, 0,
sizeof(f));
3982 memset(&ssn, 0,
sizeof(ssn));
3989 f.
proto = IPPROTO_TCP;
4011 "(msg:\"http header test\"; "
4012 "content:\"Content-Length: 7\"; http_header; "
4023 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
4029 if (http_state == NULL) {
4030 printf(
"no http state: \n");
4039 printf(
"sid 1 matched but shouldn't have\n");
4046 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
4055 printf(
"sid 1 matched but shouldn't have");
4064 if (det_ctx != NULL) {
4080 static int DetectEngineHttpHeaderTest30(
void)
4090 "(msg:\"http header test\"; "
4091 "content:\"Content-Length: 6\"; http_header; "
4092 "content:\"User-Agent: Mozilla\"; http_header; "
4108 static int DetectEngineHttpHeaderTest30(
void)
4118 uint8_t http_buf1[] =
4119 "GET /index.html HTTP/1.0\r\n"
4120 "Host: www.openinfosecfoundation.org\r\n"
4121 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7\r\n"
4123 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
4124 uint8_t http_buf2[] =
4125 "HTTP/1.0 200 ok\r\n"
4126 "Set-Cookie: dummycookieset\r\n"
4127 "Content-Type: text/html\r\n"
4128 "Content-Length: 6\r\n"
4131 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
4135 memset(&th_v, 0,
sizeof(th_v));
4137 memset(&f, 0,
sizeof(f));
4138 memset(&ssn, 0,
sizeof(ssn));
4145 f.
proto = IPPROTO_TCP;
4167 "(msg:\"http header test\"; "
4168 "content:\"dummycookieset\"; http_header; "
4179 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
4185 if (http_state == NULL) {
4186 printf(
"no http state: \n");
4195 printf(
"sid 1 matched but shouldn't have\n");
4202 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: \n", r);
4211 printf(
"sid 1 matched but shouldn't have\n");
4220 if (det_ctx != NULL) {
4237 static int DetectEngineHttpHeaderTest31(
void)
4246 uint8_t http1_buf[] =
4247 "GET /index.html HTTP/1.0\r\n"
4251 "SixZix: blah\r\n\r\n";
4252 uint32_t http1_len =
sizeof(http1_buf) - 1;
4256 memset(&th_v, 0,
sizeof(th_v));
4258 memset(&f, 0,
sizeof(f));
4259 memset(&ssn, 0,
sizeof(ssn));
4265 f.
proto = IPPROTO_TCP;
4283 "(content:\"Accept|3a|\"; http_header; "
4284 "content:!\"Cookie|3a|\"; http_header; "
4285 "content:\"Crazy6|3a|\"; http_header; "
4286 "content:\"SixZix|3a|\"; http_header; "
4297 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
4303 if (http_state == NULL) {
4304 printf(
"no http state: \n");
4313 printf(
"sid 1 didn't match but should have: ");
4322 if (det_ctx != NULL) {
4338 static int DetectEngineHttpHeaderTest32(
void)
4347 uint8_t http1_buf[] =
4348 "GET /index.html HTTP/1.0\r\n"
4350 "Transfer-Encoding: chunked\r\n"
4353 "This is dummy body1\r\n"
4355 "Dummy-Header: kaboom\r\n"
4357 uint32_t http1_len =
sizeof(http1_buf) - 1;
4361 memset(&th_v, 0,
sizeof(th_v));
4363 memset(&f, 0,
sizeof(f));
4364 memset(&ssn, 0,
sizeof(ssn));
4370 f.
proto = IPPROTO_TCP;
4388 "(content:\"Dummy\"; http_header; "
4399 printf(
"toserver chunk 1 returned %" PRId32
", expected 0: ", r);
4405 if (http_state == NULL) {
4406 printf(
"no http state: \n");
4415 printf(
"sid 1 didn't match but should have: ");
4424 if (det_ctx != NULL) {
4440 static int DetectEngineHttpHeaderTest33(
void)
4450 uint8_t http1_buf[] =
4451 "GET /index.html HTTP/1.0\r\n"
4453 "Transfer-Encoding: chunked\r\n"
4456 "This is dummy body1\r\n"
4458 uint8_t http2_buf[] =
4459 "Dummy-Header: kaboom\r\n"
4461 uint32_t http1_len =
sizeof(http1_buf) - 1;
4462 uint32_t http2_len =
sizeof(http2_buf) - 1;
4467 memset(&th_v, 0,
sizeof(th_v));
4469 memset(&f, 0,
sizeof(f));
4470 memset(&ssn, 0,
sizeof(ssn));
4477 f.
proto = IPPROTO_TCP;
4497 "(content:\"Dummy\"; http_header; "
4540 static int DetectEngineHttpHeaderTest34(
void)
4548 uint8_t http1_buf[] =
4549 "GET /index.html HTTP/1.0\r\n"
4551 "Dummy-Header1: blah\r\n"
4552 "Transfer-Encoding: chunked\r\n"
4554 uint8_t http2_buf[] =
4556 "This is dummy body1\r\n"
4558 uint8_t http3_buf[] =
4559 "Dummy-Header2: kaboom\r\n"
4561 uint32_t http1_len =
sizeof(http1_buf) - 1;
4562 uint32_t http2_len =
sizeof(http2_buf) - 1;
4563 uint32_t http3_len =
sizeof(http3_buf) - 1;
4568 memset(&th_v, 0,
sizeof(th_v));
4570 memset(&f, 0,
sizeof(f));
4571 memset(&ssn, 0,
sizeof(ssn));
4579 f.
proto = IPPROTO_TCP;
4606 "(content:\"Dummy\"; http_header; content:\"Header2\"; http_header; within:8; "
4656 static int DetectEngineHttpHeaderTest35(
void)
4664 uint8_t http1_buf[] =
4665 "GET /index.html HTTP/1.0\r\n"
4667 "Dummy-Header1: blah\r\n"
4668 "Transfer-Encoding: chunked\r\n"
4670 uint8_t http2_buf[] =
4672 "This is dummy body1\r\n"
4674 uint8_t http3_buf[] =
4675 "Dummy-Header2: kaboom\r\n"
4677 uint32_t http1_len =
sizeof(http1_buf) - 1;
4678 uint32_t http2_len =
sizeof(http2_buf) - 1;
4679 uint32_t http3_len =
sizeof(http3_buf) - 1;
4684 memset(&th_v, 0,
sizeof(th_v));
4686 memset(&f, 0,
sizeof(f));
4687 memset(&ssn, 0,
sizeof(ssn));
4695 f.
proto = IPPROTO_TCP;
4722 "(content:\"Dummy\"; http_header; fast_pattern; content:\"Header2\"; http_header; within:8; "
4771 UtRegisterTest(
"DetectHttpHeaderParserTest01", DetectHttpHeaderParserTest01);
4772 UtRegisterTest(
"DetectHttpHeaderParserTest02", DetectHttpHeaderParserTest02);
4774 UtRegisterTest(
"DetectHttpHeaderTest06", DetectHttpHeaderTest06);
4775 UtRegisterTest(
"DetectHttpHeaderTest07", DetectHttpHeaderTest07);
4776 UtRegisterTest(
"DetectHttpHeaderTest08", DetectHttpHeaderTest08);
4777 UtRegisterTest(
"DetectHttpHeaderTest09", DetectHttpHeaderTest09);
4778 UtRegisterTest(
"DetectHttpHeaderTest10", DetectHttpHeaderTest10);
4779 UtRegisterTest(
"DetectHttpHeaderTest11", DetectHttpHeaderTest11);
4780 UtRegisterTest(
"DetectHttpHeaderTest12", DetectHttpHeaderTest12);
4781 UtRegisterTest(
"DetectHttpHeaderTest13", DetectHttpHeaderTest13);
4782 UtRegisterTest(
"DetectHttpHeaderTest28", DetectHttpHeaderTest28);
4783 UtRegisterTest(
"DetectHttpHeaderTest29", DetectHttpHeaderTest29);
4784 UtRegisterTest(
"DetectHttpHeaderTest30", DetectHttpHeaderTest30);
4787 DetectHttpHeaderIsdataatParseTest);
4790 DetectEngineHttpHeaderTest01);
4792 DetectEngineHttpHeaderTest02);
4794 DetectEngineHttpHeaderTest03);
4796 DetectEngineHttpHeaderTest04);
4798 DetectEngineHttpHeaderTest05);
4800 DetectEngineHttpHeaderTest06);
4802 DetectEngineHttpHeaderTest07);
4804 DetectEngineHttpHeaderTest08);
4806 DetectEngineHttpHeaderTest09);
4808 DetectEngineHttpHeaderTest10);
4810 DetectEngineHttpHeaderTest11);
4812 DetectEngineHttpHeaderTest12);
4814 DetectEngineHttpHeaderTest13);
4816 DetectEngineHttpHeaderTest14);
4818 DetectEngineHttpHeaderTest15);
4820 DetectEngineHttpHeaderTest16);
4822 DetectEngineHttpHeaderTest17);
4824 DetectEngineHttpHeaderTest20);
4826 DetectEngineHttpHeaderTest21);
4828 DetectEngineHttpHeaderTest22);
4830 DetectEngineHttpHeaderTest23);
4832 DetectEngineHttpHeaderTest24);
4834 DetectEngineHttpHeaderTest25);
4836 DetectEngineHttpHeaderTest26);
4838 DetectEngineHttpHeaderTest27);
4840 DetectEngineHttpHeaderTest28);
4842 DetectEngineHttpHeaderTest29);
4844 DetectEngineHttpHeaderTest30);
4846 DetectEngineHttpHeaderTest31);
4849 DetectEngineHttpHeaderTest30, 1);
4852 DetectEngineHttpHeaderTest32);
4854 DetectEngineHttpHeaderTest33);
4856 DetectEngineHttpHeaderTest34);
4858 DetectEngineHttpHeaderTest35);