|
@@ -22,11 +22,19 @@ typedef int SOCKET;
|
|
|
#endif
|
|
|
|
|
|
|
|
|
+/* Port configuration */
|
|
|
+#define PORT_NUM_HTTP 8081
|
|
|
+#define PORT_STR_HTTPHTTPS "8081,8443s"
|
|
|
+
|
|
|
+
|
|
|
+#define TESTabort() {fprintf(stderr, "!!! aborting fuzz test in line %u !!!", __LINE__); abort();}
|
|
|
+
|
|
|
+
|
|
|
static uint64_t call_count = 0;
|
|
|
|
|
|
static struct mg_context *ctx;
|
|
|
static const char *OPTIONS[] = {"listening_ports",
|
|
|
- "8080,8443s",
|
|
|
+ PORT_STR_HTTPHTTPS,
|
|
|
"document_root",
|
|
|
"fuzztest/docroot",
|
|
|
"ssl_certificate",
|
|
@@ -45,7 +53,7 @@ init_civetweb(void)
|
|
|
|
|
|
if (!ctx) {
|
|
|
fprintf(stderr, "\nCivetWeb test server failed to start\n");
|
|
|
- abort();
|
|
|
+ TESTabort();
|
|
|
}
|
|
|
|
|
|
/* Give server 5 seconds to start, before flooding with requests.
|
|
@@ -134,19 +142,19 @@ init_tcp(void)
|
|
|
if (sock == -1) {
|
|
|
r = errno;
|
|
|
fprintf(stderr, "Error: Cannot create socket [%s]\n", strerror(r));
|
|
|
- abort();
|
|
|
+ TESTabort();
|
|
|
}
|
|
|
struct sockaddr_in sin;
|
|
|
memset(&sin, 0, sizeof(sin));
|
|
|
sin.sin_family = AF_INET;
|
|
|
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
|
|
|
- sin.sin_port = htons(8080);
|
|
|
+ sin.sin_port = htons(PORT_NUM_HTTP);
|
|
|
r = bind(sock, (struct sockaddr *)&sin, sizeof(sin));
|
|
|
if (r != 0) {
|
|
|
r = errno;
|
|
|
fprintf(stderr, "Error: Cannot bind [%s]\n", strerror(r));
|
|
|
closesocket(sock);
|
|
|
- abort();
|
|
|
+ TESTabort();
|
|
|
}
|
|
|
|
|
|
r = listen(sock, 128);
|
|
@@ -154,7 +162,7 @@ init_tcp(void)
|
|
|
r = errno;
|
|
|
fprintf(stderr, "Error: Cannot listen [%s]\n", strerror(r));
|
|
|
closesocket(sock);
|
|
|
- abort();
|
|
|
+ TESTabort();
|
|
|
}
|
|
|
|
|
|
pthread_t thread_id;
|
|
@@ -166,7 +174,7 @@ init_tcp(void)
|
|
|
if (!thread_prm) {
|
|
|
fprintf(stderr, "Error: Out of memory\n");
|
|
|
closesocket(sock);
|
|
|
- abort();
|
|
|
+ TESTabort();
|
|
|
}
|
|
|
thread_prm->sock = sock;
|
|
|
|
|
@@ -178,7 +186,7 @@ init_tcp(void)
|
|
|
r = errno;
|
|
|
fprintf(stderr, "Error: Cannot create thread [%s]\n", strerror(r));
|
|
|
closesocket(sock);
|
|
|
- abort();
|
|
|
+ TESTabort();
|
|
|
}
|
|
|
|
|
|
test_sleep(5);
|
|
@@ -294,7 +302,7 @@ LLVMFuzzerTestOneInput_URI(const uint8_t *data, size_t size)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
- return test_http_request("127.0.0.1", 8080, 0, URI);
|
|
|
+ return test_http_request("127.0.0.1", PORT_NUM_HTTP, 0, URI);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -317,7 +325,7 @@ LLVMFuzzerTestOneInput_REQUEST(const uint8_t *data, size_t size)
|
|
|
memset(&sin, 0, sizeof(sin));
|
|
|
sin.sin_family = AF_INET;
|
|
|
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
|
|
|
- sin.sin_port = htons(8080);
|
|
|
+ sin.sin_port = htons(PORT_NUM_HTTP);
|
|
|
r = connect(sock, (struct sockaddr *)&sin, sizeof(sin));
|
|
|
if (r != 0) {
|
|
|
r = errno;
|
|
@@ -366,7 +374,7 @@ LLVMFuzzerTestOneInput_RESPONSE(const uint8_t *data, size_t size)
|
|
|
char errbuf[256];
|
|
|
|
|
|
struct mg_connection *conn =
|
|
|
- mg_connect_client("127.0.0.1", 8080, 0, errbuf, sizeof(errbuf));
|
|
|
+ mg_connect_client("127.0.0.1", PORT_NUM_HTTP, 0, errbuf, sizeof(errbuf));
|
|
|
if (!conn) {
|
|
|
printf("Connect error: %s\n", errbuf);
|
|
|
test_sleep(1);
|