summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrei Pavel <andrei@isc.org>2024-10-23 15:40:32 +0200
committerAndrei Pavel <andrei@isc.org>2024-10-23 15:40:32 +0200
commit9f7d0a93ebf0e9af28c951c2abadb6b6da902070 (patch)
tree0da3cb421026d7a82fee8dd3da4962f20c08d901
parent[#3605] Razvan's fix for ASAN warnings in fuzzing (diff)
downloadkea-9f7d0a93ebf0e9af28c951c2abadb6b6da902070.tar.xz
kea-9f7d0a93ebf0e9af28c951c2abadb6b6da902070.zip
[#3605] Specialize HTTP fuzzers into v4 and v6
-rwxr-xr-x.clusterfuzzlite/build.sh7
-rw-r--r--doc/devel/fuzz.dox17
-rw-r--r--fuzz/.gitignore3
-rw-r--r--fuzz/Makefile.am13
-rw-r--r--fuzz/fuzz_http_endpoint_kea_dhcp4.cc (renamed from fuzz/fuzz_http_endpoint.cc)43
-rw-r--r--fuzz/fuzz_http_endpoint_kea_dhcp6.cc218
-rw-r--r--fuzz/input/Makefile.am70
l---------fuzz/input/fuzz_config_kea_dhcp4/doc-examples (renamed from fuzz/input/fuzz-config-kea-dhcp4/doc-examples)0
-rw-r--r--fuzz/input/fuzz_config_kea_dhcp4/empty (renamed from fuzz/input/fuzz-config-kea-dhcp4/empty)0
-rw-r--r--fuzz/input/fuzz_config_kea_dhcp4/one-byte (renamed from fuzz/input/fuzz-config-kea-dhcp4/one-byte)0
l---------fuzz/input/fuzz_config_kea_dhcp6/doc-examples (renamed from fuzz/input/fuzz-config-kea-dhcp6/doc-examples)0
-rw-r--r--fuzz/input/fuzz_config_kea_dhcp6/empty (renamed from fuzz/input/fuzz-config-kea-dhcp6/empty)0
-rw-r--r--fuzz/input/fuzz_config_kea_dhcp6/one-byte (renamed from fuzz/input/fuzz-config-kea-dhcp6/one-byte)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp4/config-get (renamed from fuzz/input/fuzz-http-endpoint/config-get)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp4/config-get-with-service (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp4/config-get-with-service)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp4/empty (renamed from fuzz/input/fuzz-http-endpoint/empty)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp4/empty-json-map (renamed from fuzz/input/fuzz-http-endpoint/empty-json-map)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp4/one-byte (renamed from fuzz/input/fuzz-http-endpoint/one-byte)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp4/one-entry-json-map (renamed from fuzz/input/fuzz-http-endpoint/one-entry-json-map)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp6/config-get (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp4/config-get)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp6/config-get-with-service (renamed from fuzz/input/fuzz-http-endpoint/config-get-with-service)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp6/empty (renamed from fuzz/input/fuzz-packets-kea-dhcp4/empty)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp6/empty-json-map (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp4/empty-json-map)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp6/one-byte (renamed from fuzz/input/fuzz-packets-kea-dhcp4/one-byte)0
-rw-r--r--fuzz/input/fuzz_http_endpoint_kea_dhcp6/one-entry-json-map (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp4/one-entry-json-map)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp4/dhcp-payload-only (renamed from fuzz/input/fuzz-packets-kea-dhcp4/dhcp-payload-only)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp4/empty (renamed from fuzz/input/fuzz-packets-kea-dhcp6/empty)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp4/full-dhcp-packet (renamed from fuzz/input/fuzz-packets-kea-dhcp4/full-dhcp-packet)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp4/one-byte (renamed from fuzz/input/fuzz-packets-kea-dhcp6/one-byte)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp4/udp-header (renamed from fuzz/input/fuzz-packets-kea-dhcp4/udp-header)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp6/dhcp-payload-only (renamed from fuzz/input/fuzz-packets-kea-dhcp6/dhcp-payload-only)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp6/empty (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp4/empty)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp6/full-dhcp-packet (renamed from fuzz/input/fuzz-packets-kea-dhcp6/full-dhcp-packet)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp6/one-byte (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp4/one-byte)0
-rw-r--r--fuzz/input/fuzz_packets_kea_dhcp6/udp-header (renamed from fuzz/input/fuzz-packets-kea-dhcp6/udp-header)0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp4/config-get (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp6/config-get)0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp4/config-get-with-service4
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp4/empty (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp6/empty)0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp4/empty-json-map (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp6/empty-json-map)0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp4/one-byte (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp6/one-byte)0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp4/one-entry-json-map (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp6/one-entry-json-map)0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp6/config-get3
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp6/config-get-with-service (renamed from fuzz/input/fuzz-unix-socket-kea-dhcp6/config-get-with-service)0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp6/empty0
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp6/empty-json-map1
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp6/one-byte1
-rw-r--r--fuzz/input/fuzz_unix_socket_kea_dhcp6/one-entry-json-map3
-rw-r--r--fuzz/tests/Makefile.am15
l---------fuzz/tests/setup.sh1
-rwxr-xr-xfuzz/tests/test-fuzz-packets-kea-dhcp6.sh11
-rwxr-xr-xfuzz/tests/test-fuzz-unix-socket-kea-dhcp4.sh11
-rwxr-xr-xfuzz/tests/test-fuzz-unix-socket-kea-dhcp6.sh11
-rwxr-xr-xfuzz/tests/test_fuzz_config_kea_dhcp4.sh (renamed from fuzz/tests/test-fuzz-http-endpoint.sh)2
-rwxr-xr-xfuzz/tests/test_fuzz_config_kea_dhcp6.sh (renamed from fuzz/tests/test-fuzz-packets-kea-dhcp4.sh)2
-rwxr-xr-xfuzz/tests/test_fuzz_http_endpoint_kea_dhcp4.sh (renamed from fuzz/tests/test-fuzz-config-kea-dhcp4.sh)2
-rwxr-xr-xfuzz/tests/test_fuzz_http_endpoint_kea_dhcp6.sh (renamed from fuzz/tests/test-fuzz-config-kea-dhcp6.sh)2
-rwxr-xr-xfuzz/tests/test_fuzz_packets_kea_dhcp4.sh11
-rwxr-xr-xfuzz/tests/test_fuzz_packets_kea_dhcp6.sh11
-rwxr-xr-xfuzz/tests/test_fuzz_unix_socket_kea_dhcp4.sh11
-rwxr-xr-xfuzz/tests/test_fuzz_unix_socket_kea_dhcp6.sh11
60 files changed, 387 insertions, 97 deletions
diff --git a/.clusterfuzzlite/build.sh b/.clusterfuzzlite/build.sh
index 41f60f12ad..0a1662bfd8 100755
--- a/.clusterfuzzlite/build.sh
+++ b/.clusterfuzzlite/build.sh
@@ -35,12 +35,11 @@ install_kea() {
# Copy internal libraries.
# SC2156 (warning): Injecting filenames is fragile and insecure. Use parameters.
# shellcheck disable=SC2156
- find "/opt/kea/lib" -mindepth 1 -maxdepth 1 -exec sh -c "cp {} ${KEA_BUILD_DIR}" ';'
+ find "/opt/kea/lib" -mindepth 1 -maxdepth 1 -not -type d -exec sh -c "cp {} ${KEA_BUILD_DIR}" ';'
# Copy the binaries.
- for fuzzer in fuzz-config-kea-dhcp4 fuzz-packets-kea-dhcp4 fuzz-unix-socket-kea-dhcp4 \
- fuzz-config-kea-dhcp6 fuzz-packets-kea-dhcp6 fuzz-unix-socket-kea-dhcp6 \
- fuzz-http-endpoint \
+ for fuzzer in fuzz_config_kea_dhcp4 fuzz_http_endpoint_kea_dhcp4 fuzz_packets_kea_dhcp4 fuzz_unix_socket_kea_dhcp4 \
+ fuzz_config_kea_dhcp6 fuzz_http_endpoint_kea_dhcp6 fuzz_packets_kea_dhcp6 fuzz_unix_socket_kea_dhcp6 \
; do
cp "/opt/kea/sbin/${fuzzer}" "${OUT}/${fuzzer}"
# copy all required libraries
diff --git a/doc/devel/fuzz.dox b/doc/devel/fuzz.dox
index c2b5091f72..aa7bf8148d 100644
--- a/doc/devel/fuzz.dox
+++ b/doc/devel/fuzz.dox
@@ -34,14 +34,15 @@ There are two binaries under test:
- `kea-dhcp4`
- `kea-dhcp6`
-Combining the binaries and the fuzzer types results in seven fuzzing binaries:
-- `fuzz/fuzz-config-kea-dhcp4`
-- `fuzz/fuzz-config-kea-dhcp6`
-- `fuzz/fuzz-http-endpoint`
-- `fuzz/fuzz-packets-kea-dhcp4`
-- `fuzz/fuzz-packets-kea-dhcp6`
-- `fuzz/fuzz-unix-socket-kea-dhcp4`
-- `fuzz/fuzz-unix-socket-kea-dhcp6`
+Combining the binaries and the fuzzer types results in eight fuzzing binaries:
+- `fuzz/fuzz_config_kea_dhcp4`
+- `fuzz/fuzz_config_kea_dhcp6`
+- `fuzz/fuzz_http_endpoint_kea_dhcp4`
+- `fuzz/fuzz_http_endpoint_kea_dhcp6`
+- `fuzz/fuzz_packets_kea_dhcp4`
+- `fuzz/fuzz_packets_kea_dhcp6`
+- `fuzz/fuzz_unix_socket_kea_dhcp4`
+- `fuzz/fuzz_unix_socket_kea_dhcp6`
@subsection HowToBuild How to Build the LLVM Fuzzer
diff --git a/fuzz/.gitignore b/fuzz/.gitignore
index 49369083ff..ecbfbbdc91 100644
--- a/fuzz/.gitignore
+++ b/fuzz/.gitignore
@@ -1,6 +1,7 @@
/fuzz_config_kea_dhcp4
/fuzz_config_kea_dhcp6
-/fuzz_http_endpoint
+/fuzz_http_endpoint_kea_dhcp4
+/fuzz_http_endpoint_kea_dhcp6
/fuzz_packets_kea_dhcp4
/fuzz_packets_kea_dhcp6
/fuzz_unix_socket_kea_dhcp4
diff --git a/fuzz/Makefile.am b/fuzz/Makefile.am
index 16da3af0b7..81d864559a 100644
--- a/fuzz/Makefile.am
+++ b/fuzz/Makefile.am
@@ -20,7 +20,8 @@ CLEANFILES = *.gcno *.gcda
sbin_PROGRAMS =
sbin_PROGRAMS += fuzz_config_kea_dhcp4
sbin_PROGRAMS += fuzz_config_kea_dhcp6
-sbin_PROGRAMS += fuzz_http_endpoint
+sbin_PROGRAMS += fuzz_http_endpoint_kea_dhcp4
+sbin_PROGRAMS += fuzz_http_endpoint_kea_dhcp6
sbin_PROGRAMS += fuzz_packets_kea_dhcp4
sbin_PROGRAMS += fuzz_packets_kea_dhcp6
sbin_PROGRAMS += fuzz_unix_socket_kea_dhcp4
@@ -65,9 +66,13 @@ fuzz_config_kea_dhcp6_SOURCES = $(common_sources)
fuzz_config_kea_dhcp6_SOURCES += fuzz_config_kea_dhcp6.cc
fuzz_config_kea_dhcp6_LDADD = $(V6_LDADD) $(LDADD)
-fuzz_http_endpoint_SOURCES = $(common_sources)
-fuzz_http_endpoint_SOURCES += fuzz_http_endpoint.cc
-fuzz_http_endpoint_LDADD = $(LDADD)
+fuzz_http_endpoint_kea_dhcp4_SOURCES = $(common_sources)
+fuzz_http_endpoint_kea_dhcp4_SOURCES += fuzz_http_endpoint_kea_dhcp4.cc
+fuzz_http_endpoint_kea_dhcp4_LDADD = $(V4_LDADD) $(LDADD)
+
+fuzz_http_endpoint_kea_dhcp6_SOURCES = $(common_sources)
+fuzz_http_endpoint_kea_dhcp6_SOURCES += fuzz_http_endpoint_kea_dhcp6.cc
+fuzz_http_endpoint_kea_dhcp6_LDADD = $(V6_LDADD) $(LDADD)
fuzz_packets_kea_dhcp4_SOURCES = $(common_sources)
fuzz_packets_kea_dhcp4_SOURCES += fuzz_packets_kea_dhcp4.cc
diff --git a/fuzz/fuzz_http_endpoint.cc b/fuzz/fuzz_http_endpoint_kea_dhcp4.cc
index ddddd77f8d..5fae753fd8 100644
--- a/fuzz/fuzz_http_endpoint.cc
+++ b/fuzz/fuzz_http_endpoint_kea_dhcp4.cc
@@ -17,6 +17,8 @@
#include <asiolink/interval_timer.h>
#include <cc/data.h>
#include <config/cmd_http_listener.h>
+#include <dhcp4/ctrl_dhcp4_srv.h>
+#include <dhcpsrv/cfgmgr.h>
#include <http/listener.h>
#include <http/post_request_json.h>
#include <http/response.h>
@@ -30,6 +32,7 @@
using namespace isc::asiolink;
using namespace isc::config;
using namespace isc::data;
+using namespace isc::dhcp;
using namespace isc::process;
using namespace isc::http;
using namespace isc::http::test;
@@ -38,6 +41,13 @@ using namespace std;
namespace {
+static pid_t const PID(getpid());
+static int const PORT(getpid() % 1000 + 2000);
+static string const PID_STR(to_string(PID));
+static string const PORT_STR(to_string(PORT));
+static string const KEA_DHCP4_CONF(KEA_FUZZ_DIR + "/kea-dhcp4-" + PID_STR + ".conf");
+static string const KEA_DHCP4_CSV(KEA_FUZZ_DIR + "/kea-dhcp4-" + PID_STR + ".csv");
+
void timeoutHandler() {
cerr << "Timeout occurred while fuzzing!" << endl;
abort();
@@ -89,9 +99,6 @@ using PostHttpRequestBytesPtr = boost::shared_ptr<PostHttpRequestBytes>;
ThreadPool<function<void()>> THREAD_POOL;
-static pid_t const PID(getpid());
-static string const PID_STR(to_string(PID));
-
} // namespace
extern "C" {
@@ -101,16 +108,46 @@ LLVMFuzzerInitialize() {
static bool initialized(DoInitialization());
assert(initialized);
+ writeToFile(KEA_DHCP4_CONF, R"(
+ {
+ "Dhcp4": {
+ "control-sockets": [
+ {
+ "socket-address": "0.0.0.0",
+ "socket-port": )" + PORT_STR + R"(,
+ "socket-type": "http"
+ }
+ ],
+ "lease-database": {
+ "name": ")" + KEA_DHCP4_CSV + R"(",
+ "type": "memfile"
+ }
+ }
+ }
+ )");
+
return 0;
}
int
LLVMFuzzerTearDown() {
+ try {
+ remove(KEA_DHCP4_CONF.c_str());
+ } catch (...) {
+ }
+ try {
+ remove(KEA_DHCP4_CSV.c_str());
+ } catch (...) {
+ }
return 0;
}
int
LLVMFuzzerTestOneInput(uint8_t const* data, size_t size) {
+ CfgMgr::instance().clear();
+ ControlledDhcpv4Srv server;
+ server.init(KEA_DHCP4_CONF);
+
string const address("127.0.0.1");
int const port(18000);
int const timeout(100000);
diff --git a/fuzz/fuzz_http_endpoint_kea_dhcp6.cc b/fuzz/fuzz_http_endpoint_kea_dhcp6.cc
new file mode 100644
index 0000000000..be2c78dbb1
--- /dev/null
+++ b/fuzz/fuzz_http_endpoint_kea_dhcp6.cc
@@ -0,0 +1,218 @@
+// Copyright (C) 2024 Internet Systems Consortium, Inc. ("ISC")
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#include <config.h>
+
+#include <cassert>
+#include <cstdlib>
+#include <iostream>
+#include <list>
+
+#include <fuzz.h>
+
+#include <asiolink/io_service.h>
+#include <asiolink/interval_timer.h>
+#include <cc/data.h>
+#include <config/cmd_http_listener.h>
+#include <dhcp6/ctrl_dhcp6_srv.h>
+#include <dhcpsrv/cfgmgr.h>
+#include <http/listener.h>
+#include <http/post_request_json.h>
+#include <http/response.h>
+#include <http/response_json.h>
+#include <http/tests/response_test.h>
+#include <http/testutils/test_http_client.h>
+#include <process/d_controller.h>
+#include <util/filesystem.h>
+#include <util/multi_threading_mgr.h>
+
+using namespace isc::asiolink;
+using namespace isc::config;
+using namespace isc::data;
+using namespace isc::dhcp;
+using namespace isc::process;
+using namespace isc::http;
+using namespace isc::http::test;
+using namespace isc::util;
+using namespace std;
+
+namespace {
+
+static pid_t const PID(getpid());
+static int const PORT(getpid() % 1000 + 2000);
+static string const PID_STR(to_string(PID));
+static string const PORT_STR(to_string(PORT));
+static string const KEA_DHCP6_CONF(KEA_FUZZ_DIR + "/kea-dhcp6-" + PID_STR + ".conf");
+static string const KEA_DHCP6_CSV(KEA_FUZZ_DIR + "/kea-dhcp6-" + PID_STR + ".csv");
+
+void timeoutHandler() {
+ cerr << "Timeout occurred while fuzzing!" << endl;
+ abort();
+}
+
+/// @brief Represents HTTP POST request with JSON body.
+///
+/// In addition to the requirements specified by the @ref PostHttpRequest
+/// this class requires that the "Content-Type" is "application/json".
+///
+/// This class provides methods to parse and retrieve JSON data structures.
+struct PostHttpRequestBytes : PostHttpRequest {
+ /// @brief Constructor for inbound HTTP request.
+ explicit PostHttpRequestBytes() : PostHttpRequest() {
+ requireHeaderValue("Content-Type", "application/json");
+ }
+
+ /// @brief Constructor for outbound HTTP request.
+ ///
+ /// This constructor adds "Content-Type" header with the value of
+ /// "application/json" to the context.
+ ///
+ /// @param method HTTP method, e.g. POST.
+ /// @param uri URI.
+ /// @param version HTTP version.
+ /// @param host_header Host header to be included in the request. The default
+ /// is the empty Host header.
+ /// @param basic_auth Basic HTTP authentication credential. The default
+ /// is no authentication.
+ explicit PostHttpRequestBytes(const Method& method,
+ const string& uri,
+ const HttpVersion& version,
+ const HostHttpHeader& host_header = HostHttpHeader(),
+ const BasicHttpAuthPtr& basic_auth = BasicHttpAuthPtr())
+ : PostHttpRequest(method, uri, version, host_header, basic_auth) {
+ requireHeaderValue("Content-Type", "application/json");
+ context()->headers_.push_back(HttpHeaderContext("Content-Type", "application/json"));
+ }
+
+ /// @brief Sets JSON body for an outbound message.
+ ///
+ /// @param body JSON structure to be used as a body.
+ void setBodyAsBytes(vector<uint8_t> const& input) {
+ context_->body_ = string(input.begin(), input.end());
+ }
+};
+
+using PostHttpRequestBytesPtr = boost::shared_ptr<PostHttpRequestBytes>;
+
+ThreadPool<function<void()>> THREAD_POOL;
+
+} // namespace
+
+extern "C" {
+
+int
+LLVMFuzzerInitialize() {
+ static bool initialized(DoInitialization());
+ assert(initialized);
+
+ writeToFile(KEA_DHCP6_CONF, R"(
+ {
+ "Dhcp6": {
+ "control-sockets": [
+ {
+ "socket-address": "0.0.0.0",
+ "socket-port": )" + PORT_STR + R"(,
+ "socket-type": "http"
+ }
+ ],
+ "lease-database": {
+ "name": ")" + KEA_DHCP6_CSV + R"(",
+ "type": "memfile"
+ },
+ "server-id": {
+ "type": "EN",
+ "enterprise-id": 2495,
+ "identifier": "0123456789",
+ "persist": false
+ }
+ }
+ }
+ )");
+
+ return 0;
+}
+
+int
+LLVMFuzzerTearDown() {
+ try {
+ remove(KEA_DHCP6_CONF.c_str());
+ } catch (...) {
+ }
+ try {
+ remove(KEA_DHCP6_CSV.c_str());
+ } catch (...) {
+ }
+ return 0;
+}
+
+int
+LLVMFuzzerTestOneInput(uint8_t const* data, size_t size) {
+ CfgMgr::instance().clear();
+ ControlledDhcpv6Srv server;
+ server.init(KEA_DHCP6_CONF);
+
+ string const address("127.0.0.1");
+ int const port(18000);
+ int const timeout(100000);
+
+ CmdHttpListener listener(IOAddress(address), port);
+ MultiThreadingMgr::instance().setMode(true);
+
+ // Start the server.
+ listener.start();
+
+ // Create a client and specify the URL on which the server can be reached.
+ IOServicePtr io_service(new IOService());
+ IntervalTimer run_io_service_timer(io_service);
+ HttpClient client(io_service, false);
+ stringstream ss;
+ ss << "http://" << address << ":" << port;
+ Url url(ss.str());
+
+ // Initiate request to the server.
+ PostHttpRequestBytesPtr request(new PostHttpRequestBytes(
+ HttpRequest::Method::HTTP_POST, "/", HttpVersion(1, 1)));
+
+ // Body is a map with a specified parameter included.
+ vector<uint8_t> const body(data, data + size);
+ request->setBodyAsBytes(body);
+ request->finalize();
+ HttpResponseJsonPtr response(new HttpResponseJson());
+ client.asyncSendRequest(
+ url, TlsContextPtr(), request, response,
+ [](boost::system::error_code const&,
+ HttpResponsePtr const&,
+ string const&) {
+ });
+
+ // Actually trigger the requests. The requests should be handlded by the
+ // server one after another. While the first request is being processed
+ // the server should queue another one.
+ io_service->getInternalIOService().reset();
+ run_io_service_timer.setup(&timeoutHandler, timeout, IntervalTimer::ONE_SHOT);
+ io_service->runOne();
+ io_service->getInternalIOService().reset();
+ io_service->poll();
+
+ // Make sure that the received responses are different. We check that by
+ // comparing value of the sequence parameters.
+ if (getenv("DEBUG")) {
+ if (response) {
+ cout << response->getBody() << endl;
+ } else {
+ cout << "no response" << endl;
+ }
+ }
+ listener.stop();
+ client.stop();
+ run_io_service_timer.cancel();
+ io_service->poll();
+ MultiThreadingMgr::instance().setMode(false);
+
+ return 0;
+}
+
+} // extern "C"
diff --git a/fuzz/input/Makefile.am b/fuzz/input/Makefile.am
index f1c9e11a64..00de13c91e 100644
--- a/fuzz/input/Makefile.am
+++ b/fuzz/input/Makefile.am
@@ -5,38 +5,44 @@ if FUZZING
fuzzdir = "${datarootdir}/${PACKAGE_NAME}/fuzz"
nobase_dist_fuzz_DATA =
-nobase_dist_fuzz_DATA += fuzz-config-kea-dhcp4/empty
-nobase_dist_fuzz_DATA += fuzz-config-kea-dhcp4/one-byte
-nobase_dist_fuzz_DATA += fuzz-config-kea-dhcp6/empty
-nobase_dist_fuzz_DATA += fuzz-config-kea-dhcp6/one-byte
-nobase_dist_fuzz_DATA += fuzz-http-endpoint/config-get
-nobase_dist_fuzz_DATA += fuzz-http-endpoint/config-get-with-service
-nobase_dist_fuzz_DATA += fuzz-http-endpoint/empty
-nobase_dist_fuzz_DATA += fuzz-http-endpoint/empty-json-map
-nobase_dist_fuzz_DATA += fuzz-http-endpoint/one-byte
-nobase_dist_fuzz_DATA += fuzz-http-endpoint/one-entry-json-map
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp4/dhcp-payload-only
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp4/empty
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp4/full-dhcp-packet
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp4/one-byte
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp4/udp-header
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp6/dhcp-payload-only
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp6/empty
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp6/full-dhcp-packet
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp6/one-byte
-nobase_dist_fuzz_DATA += fuzz-packets-kea-dhcp6/udp-header
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp4/config-get
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp4/config-get-with-service
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp4/empty
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp4/empty-json-map
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp4/one-byte
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp4/one-entry-json-map
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp6/config-get
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp6/config-get-with-service
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp6/empty
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp6/empty-json-map
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp6/one-byte
-nobase_dist_fuzz_DATA += fuzz-unix-socket-kea-dhcp6/one-entry-json-map
+nobase_dist_fuzz_DATA += fuzz_config_kea_dhcp4/empty
+nobase_dist_fuzz_DATA += fuzz_config_kea_dhcp4/one-byte
+nobase_dist_fuzz_DATA += fuzz_config_kea_dhcp6/empty
+nobase_dist_fuzz_DATA += fuzz_config_kea_dhcp6/one-byte
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp4/config-get
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp4/config-get-with-service
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp4/empty
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp4/empty-json-map
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp4/one-byte
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp4/one-entry-json-map
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp6/config-get
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp6/config-get-with-service
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp6/empty
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp6/empty-json-map
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp6/one-byte
+nobase_dist_fuzz_DATA += fuzz_http_endpoint_kea_dhcp6/one-entry-json-map
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp4/dhcp-payload-only
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp4/empty
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp4/full-dhcp-packet
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp4/one-byte
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp4/udp-header
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp6/dhcp-payload-only
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp6/empty
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp6/full-dhcp-packet
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp6/one-byte
+nobase_dist_fuzz_DATA += fuzz_packets_kea_dhcp6/udp-header
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp4/config-get
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp4/config-get-with-service
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp4/empty
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp4/empty-json-map
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp4/one-byte
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp4/one-entry-json-map
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp6/config-get
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp6/config-get-with-service
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp6/empty
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp6/empty-json-map
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp6/one-byte
+nobase_dist_fuzz_DATA += fuzz_unix_socket_kea_dhcp6/one-entry-json-map
nobase_dist_fuzz_DATA += kea-dhcp4.conf
nobase_dist_fuzz_DATA += kea-dhcp6.conf
diff --git a/fuzz/input/fuzz-config-kea-dhcp4/doc-examples b/fuzz/input/fuzz_config_kea_dhcp4/doc-examples
index 0b5652bef7..0b5652bef7 120000
--- a/fuzz/input/fuzz-config-kea-dhcp4/doc-examples
+++ b/fuzz/input/fuzz_config_kea_dhcp4/doc-examples
diff --git a/fuzz/input/fuzz-config-kea-dhcp4/empty b/fuzz/input/fuzz_config_kea_dhcp4/empty
index e69de29bb2..e69de29bb2 100644
--- a/fuzz/input/fuzz-config-kea-dhcp4/empty
+++ b/fuzz/input/fuzz_config_kea_dhcp4/empty
diff --git a/fuzz/input/fuzz-config-kea-dhcp4/one-byte b/fuzz/input/fuzz_config_kea_dhcp4/one-byte
index 47d26df80d..47d26df80d 100644
--- a/fuzz/input/fuzz-config-kea-dhcp4/one-byte
+++ b/fuzz/input/fuzz_config_kea_dhcp4/one-byte
diff --git a/fuzz/input/fuzz-config-kea-dhcp6/doc-examples b/fuzz/input/fuzz_config_kea_dhcp6/doc-examples
index 05f98b3048..05f98b3048 120000
--- a/fuzz/input/fuzz-config-kea-dhcp6/doc-examples
+++ b/fuzz/input/fuzz_config_kea_dhcp6/doc-examples
diff --git a/fuzz/input/fuzz-config-kea-dhcp6/empty b/fuzz/input/fuzz_config_kea_dhcp6/empty
index e69de29bb2..e69de29bb2 100644
--- a/fuzz/input/fuzz-config-kea-dhcp6/empty
+++ b/fuzz/input/fuzz_config_kea_dhcp6/empty
diff --git a/fuzz/input/fuzz-config-kea-dhcp6/one-byte b/fuzz/input/fuzz_config_kea_dhcp6/one-byte
index 47d26df80d..47d26df80d 100644
--- a/fuzz/input/fuzz-config-kea-dhcp6/one-byte
+++ b/fuzz/input/fuzz_config_kea_dhcp6/one-byte
diff --git a/fuzz/input/fuzz-http-endpoint/config-get b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/config-get
index 7ce1bfffff..7ce1bfffff 100644
--- a/fuzz/input/fuzz-http-endpoint/config-get
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/config-get
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp4/config-get-with-service b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/config-get-with-service
index 11ed27a1c2..11ed27a1c2 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp4/config-get-with-service
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/config-get-with-service
diff --git a/fuzz/input/fuzz-http-endpoint/empty b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/empty
index e69de29bb2..e69de29bb2 100644
--- a/fuzz/input/fuzz-http-endpoint/empty
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/empty
diff --git a/fuzz/input/fuzz-http-endpoint/empty-json-map b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/empty-json-map
index 0967ef424b..0967ef424b 100644
--- a/fuzz/input/fuzz-http-endpoint/empty-json-map
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/empty-json-map
diff --git a/fuzz/input/fuzz-http-endpoint/one-byte b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/one-byte
index 47d26df80d..47d26df80d 100644
--- a/fuzz/input/fuzz-http-endpoint/one-byte
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/one-byte
diff --git a/fuzz/input/fuzz-http-endpoint/one-entry-json-map b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/one-entry-json-map
index 8d6b85c7b3..8d6b85c7b3 100644
--- a/fuzz/input/fuzz-http-endpoint/one-entry-json-map
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp4/one-entry-json-map
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp4/config-get b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/config-get
index 7ce1bfffff..7ce1bfffff 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp4/config-get
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/config-get
diff --git a/fuzz/input/fuzz-http-endpoint/config-get-with-service b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/config-get-with-service
index df926792e3..df926792e3 100644
--- a/fuzz/input/fuzz-http-endpoint/config-get-with-service
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/config-get-with-service
diff --git a/fuzz/input/fuzz-packets-kea-dhcp4/empty b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/empty
index e69de29bb2..e69de29bb2 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp4/empty
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/empty
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp4/empty-json-map b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/empty-json-map
index 0967ef424b..0967ef424b 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp4/empty-json-map
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/empty-json-map
diff --git a/fuzz/input/fuzz-packets-kea-dhcp4/one-byte b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/one-byte
index 47d26df80d..47d26df80d 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp4/one-byte
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/one-byte
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp4/one-entry-json-map b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/one-entry-json-map
index 8d6b85c7b3..8d6b85c7b3 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp4/one-entry-json-map
+++ b/fuzz/input/fuzz_http_endpoint_kea_dhcp6/one-entry-json-map
diff --git a/fuzz/input/fuzz-packets-kea-dhcp4/dhcp-payload-only b/fuzz/input/fuzz_packets_kea_dhcp4/dhcp-payload-only
index 153050e658..153050e658 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp4/dhcp-payload-only
+++ b/fuzz/input/fuzz_packets_kea_dhcp4/dhcp-payload-only
diff --git a/fuzz/input/fuzz-packets-kea-dhcp6/empty b/fuzz/input/fuzz_packets_kea_dhcp4/empty
index e69de29bb2..e69de29bb2 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp6/empty
+++ b/fuzz/input/fuzz_packets_kea_dhcp4/empty
diff --git a/fuzz/input/fuzz-packets-kea-dhcp4/full-dhcp-packet b/fuzz/input/fuzz_packets_kea_dhcp4/full-dhcp-packet
index 802b1e369f..802b1e369f 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp4/full-dhcp-packet
+++ b/fuzz/input/fuzz_packets_kea_dhcp4/full-dhcp-packet
diff --git a/fuzz/input/fuzz-packets-kea-dhcp6/one-byte b/fuzz/input/fuzz_packets_kea_dhcp4/one-byte
index 47d26df80d..47d26df80d 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp6/one-byte
+++ b/fuzz/input/fuzz_packets_kea_dhcp4/one-byte
diff --git a/fuzz/input/fuzz-packets-kea-dhcp4/udp-header b/fuzz/input/fuzz_packets_kea_dhcp4/udp-header
index fdcab50643..fdcab50643 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp4/udp-header
+++ b/fuzz/input/fuzz_packets_kea_dhcp4/udp-header
diff --git a/fuzz/input/fuzz-packets-kea-dhcp6/dhcp-payload-only b/fuzz/input/fuzz_packets_kea_dhcp6/dhcp-payload-only
index 6058a7390e..6058a7390e 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp6/dhcp-payload-only
+++ b/fuzz/input/fuzz_packets_kea_dhcp6/dhcp-payload-only
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp4/empty b/fuzz/input/fuzz_packets_kea_dhcp6/empty
index e69de29bb2..e69de29bb2 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp4/empty
+++ b/fuzz/input/fuzz_packets_kea_dhcp6/empty
diff --git a/fuzz/input/fuzz-packets-kea-dhcp6/full-dhcp-packet b/fuzz/input/fuzz_packets_kea_dhcp6/full-dhcp-packet
index efcaf6c700..efcaf6c700 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp6/full-dhcp-packet
+++ b/fuzz/input/fuzz_packets_kea_dhcp6/full-dhcp-packet
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp4/one-byte b/fuzz/input/fuzz_packets_kea_dhcp6/one-byte
index 47d26df80d..47d26df80d 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp4/one-byte
+++ b/fuzz/input/fuzz_packets_kea_dhcp6/one-byte
diff --git a/fuzz/input/fuzz-packets-kea-dhcp6/udp-header b/fuzz/input/fuzz_packets_kea_dhcp6/udp-header
index 95864fd7fb..95864fd7fb 100644
--- a/fuzz/input/fuzz-packets-kea-dhcp6/udp-header
+++ b/fuzz/input/fuzz_packets_kea_dhcp6/udp-header
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp6/config-get b/fuzz/input/fuzz_unix_socket_kea_dhcp4/config-get
index 7ce1bfffff..7ce1bfffff 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp6/config-get
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp4/config-get
diff --git a/fuzz/input/fuzz_unix_socket_kea_dhcp4/config-get-with-service b/fuzz/input/fuzz_unix_socket_kea_dhcp4/config-get-with-service
new file mode 100644
index 0000000000..11ed27a1c2
--- /dev/null
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp4/config-get-with-service
@@ -0,0 +1,4 @@
+{
+ "command": "config-get",
+ "service": [ "dhcp4" ]
+}
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp6/empty b/fuzz/input/fuzz_unix_socket_kea_dhcp4/empty
index e69de29bb2..e69de29bb2 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp6/empty
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp4/empty
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp6/empty-json-map b/fuzz/input/fuzz_unix_socket_kea_dhcp4/empty-json-map
index 0967ef424b..0967ef424b 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp6/empty-json-map
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp4/empty-json-map
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp6/one-byte b/fuzz/input/fuzz_unix_socket_kea_dhcp4/one-byte
index 47d26df80d..47d26df80d 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp6/one-byte
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp4/one-byte
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp6/one-entry-json-map b/fuzz/input/fuzz_unix_socket_kea_dhcp4/one-entry-json-map
index 8d6b85c7b3..8d6b85c7b3 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp6/one-entry-json-map
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp4/one-entry-json-map
diff --git a/fuzz/input/fuzz_unix_socket_kea_dhcp6/config-get b/fuzz/input/fuzz_unix_socket_kea_dhcp6/config-get
new file mode 100644
index 0000000000..7ce1bfffff
--- /dev/null
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp6/config-get
@@ -0,0 +1,3 @@
+{
+ "command": "config-get"
+}
diff --git a/fuzz/input/fuzz-unix-socket-kea-dhcp6/config-get-with-service b/fuzz/input/fuzz_unix_socket_kea_dhcp6/config-get-with-service
index df926792e3..df926792e3 100644
--- a/fuzz/input/fuzz-unix-socket-kea-dhcp6/config-get-with-service
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp6/config-get-with-service
diff --git a/fuzz/input/fuzz_unix_socket_kea_dhcp6/empty b/fuzz/input/fuzz_unix_socket_kea_dhcp6/empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp6/empty
diff --git a/fuzz/input/fuzz_unix_socket_kea_dhcp6/empty-json-map b/fuzz/input/fuzz_unix_socket_kea_dhcp6/empty-json-map
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp6/empty-json-map
@@ -0,0 +1 @@
+{}
diff --git a/fuzz/input/fuzz_unix_socket_kea_dhcp6/one-byte b/fuzz/input/fuzz_unix_socket_kea_dhcp6/one-byte
new file mode 100644
index 0000000000..47d26df80d
--- /dev/null
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp6/one-byte
@@ -0,0 +1 @@
+0a \ No newline at end of file
diff --git a/fuzz/input/fuzz_unix_socket_kea_dhcp6/one-entry-json-map b/fuzz/input/fuzz_unix_socket_kea_dhcp6/one-entry-json-map
new file mode 100644
index 0000000000..8d6b85c7b3
--- /dev/null
+++ b/fuzz/input/fuzz_unix_socket_kea_dhcp6/one-entry-json-map
@@ -0,0 +1,3 @@
+{
+ "a": 1
+}
diff --git a/fuzz/tests/Makefile.am b/fuzz/tests/Makefile.am
index 3727d137db..ac2ba0d353 100644
--- a/fuzz/tests/Makefile.am
+++ b/fuzz/tests/Makefile.am
@@ -3,13 +3,14 @@ SUBDIRS = .
if FUZZING
check_SCRIPTS =
-check_SCRIPTS += test-fuzz-config-kea-dhcp4.sh
-check_SCRIPTS += test-fuzz-config-kea-dhcp6.sh
-check_SCRIPTS += test-fuzz-http-endpoint.sh
-check_SCRIPTS += test-fuzz-packets-kea-dhcp4.sh
-check_SCRIPTS += test-fuzz-packets-kea-dhcp6.sh
-check_SCRIPTS += test-fuzz-unix-socket-kea-dhcp4.sh
-check_SCRIPTS += test-fuzz-unix-socket-kea-dhcp6.sh
+check_SCRIPTS += test_fuzz_config_kea_dhcp4.sh
+check_SCRIPTS += test_fuzz_config_kea_dhcp6.sh
+check_SCRIPTS += test_fuzz_http_endpoint_kea_dhcp4.sh
+check_SCRIPTS += test_fuzz_http_endpoint_kea_dhcp6.sh
+check_SCRIPTS += test_fuzz_packets_kea_dhcp4.sh
+check_SCRIPTS += test_fuzz_packets_kea_dhcp6.sh
+check_SCRIPTS += test_fuzz_unix_socket_kea_dhcp4.sh
+check_SCRIPTS += test_fuzz_unix_socket_kea_dhcp6.sh
TESTS = $(check_SCRIPTS)
diff --git a/fuzz/tests/setup.sh b/fuzz/tests/setup.sh
deleted file mode 120000
index 1664189fbb..0000000000
--- a/fuzz/tests/setup.sh
+++ /dev/null
@@ -1 +0,0 @@
-../setup.sh \ No newline at end of file
diff --git a/fuzz/tests/test-fuzz-packets-kea-dhcp6.sh b/fuzz/tests/test-fuzz-packets-kea-dhcp6.sh
deleted file mode 100755
index fcbebc1fe8..0000000000
--- a/fuzz/tests/test-fuzz-packets-kea-dhcp6.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-if ! sudo -n true; then exec sudo -E -- "${0}" "${@}"; fi
-
-script_path=$(cd "$(dirname "${0}")" && pwd)
-
-script_basename=$(basename "${0}")
-
-tested_binary=$(printf '%s' "${script_basename}" | sed 's/test-//g;s/.sh//g')
-
-"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test-fuzz-unix-socket-kea-dhcp4.sh b/fuzz/tests/test-fuzz-unix-socket-kea-dhcp4.sh
deleted file mode 100755
index fcbebc1fe8..0000000000
--- a/fuzz/tests/test-fuzz-unix-socket-kea-dhcp4.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-if ! sudo -n true; then exec sudo -E -- "${0}" "${@}"; fi
-
-script_path=$(cd "$(dirname "${0}")" && pwd)
-
-script_basename=$(basename "${0}")
-
-tested_binary=$(printf '%s' "${script_basename}" | sed 's/test-//g;s/.sh//g')
-
-"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test-fuzz-unix-socket-kea-dhcp6.sh b/fuzz/tests/test-fuzz-unix-socket-kea-dhcp6.sh
deleted file mode 100755
index fcbebc1fe8..0000000000
--- a/fuzz/tests/test-fuzz-unix-socket-kea-dhcp6.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-if ! sudo -n true; then exec sudo -E -- "${0}" "${@}"; fi
-
-script_path=$(cd "$(dirname "${0}")" && pwd)
-
-script_basename=$(basename "${0}")
-
-tested_binary=$(printf '%s' "${script_basename}" | sed 's/test-//g;s/.sh//g')
-
-"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test-fuzz-http-endpoint.sh b/fuzz/tests/test_fuzz_config_kea_dhcp4.sh
index fcbebc1fe8..416b72a656 100755
--- a/fuzz/tests/test-fuzz-http-endpoint.sh
+++ b/fuzz/tests/test_fuzz_config_kea_dhcp4.sh
@@ -6,6 +6,6 @@ script_path=$(cd "$(dirname "${0}")" && pwd)
script_basename=$(basename "${0}")
-tested_binary=$(printf '%s' "${script_basename}" | sed 's/test-//g;s/.sh//g')
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test-fuzz-packets-kea-dhcp4.sh b/fuzz/tests/test_fuzz_config_kea_dhcp6.sh
index fcbebc1fe8..416b72a656 100755
--- a/fuzz/tests/test-fuzz-packets-kea-dhcp4.sh
+++ b/fuzz/tests/test_fuzz_config_kea_dhcp6.sh
@@ -6,6 +6,6 @@ script_path=$(cd "$(dirname "${0}")" && pwd)
script_basename=$(basename "${0}")
-tested_binary=$(printf '%s' "${script_basename}" | sed 's/test-//g;s/.sh//g')
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test-fuzz-config-kea-dhcp4.sh b/fuzz/tests/test_fuzz_http_endpoint_kea_dhcp4.sh
index fcbebc1fe8..416b72a656 100755
--- a/fuzz/tests/test-fuzz-config-kea-dhcp4.sh
+++ b/fuzz/tests/test_fuzz_http_endpoint_kea_dhcp4.sh
@@ -6,6 +6,6 @@ script_path=$(cd "$(dirname "${0}")" && pwd)
script_basename=$(basename "${0}")
-tested_binary=$(printf '%s' "${script_basename}" | sed 's/test-//g;s/.sh//g')
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test-fuzz-config-kea-dhcp6.sh b/fuzz/tests/test_fuzz_http_endpoint_kea_dhcp6.sh
index fcbebc1fe8..416b72a656 100755
--- a/fuzz/tests/test-fuzz-config-kea-dhcp6.sh
+++ b/fuzz/tests/test_fuzz_http_endpoint_kea_dhcp6.sh
@@ -6,6 +6,6 @@ script_path=$(cd "$(dirname "${0}")" && pwd)
script_basename=$(basename "${0}")
-tested_binary=$(printf '%s' "${script_basename}" | sed 's/test-//g;s/.sh//g')
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test_fuzz_packets_kea_dhcp4.sh b/fuzz/tests/test_fuzz_packets_kea_dhcp4.sh
new file mode 100755
index 0000000000..416b72a656
--- /dev/null
+++ b/fuzz/tests/test_fuzz_packets_kea_dhcp4.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if ! sudo -n true; then exec sudo -E -- "${0}" "${@}"; fi
+
+script_path=$(cd "$(dirname "${0}")" && pwd)
+
+script_basename=$(basename "${0}")
+
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
+
+"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test_fuzz_packets_kea_dhcp6.sh b/fuzz/tests/test_fuzz_packets_kea_dhcp6.sh
new file mode 100755
index 0000000000..416b72a656
--- /dev/null
+++ b/fuzz/tests/test_fuzz_packets_kea_dhcp6.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if ! sudo -n true; then exec sudo -E -- "${0}" "${@}"; fi
+
+script_path=$(cd "$(dirname "${0}")" && pwd)
+
+script_basename=$(basename "${0}")
+
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
+
+"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test_fuzz_unix_socket_kea_dhcp4.sh b/fuzz/tests/test_fuzz_unix_socket_kea_dhcp4.sh
new file mode 100755
index 0000000000..416b72a656
--- /dev/null
+++ b/fuzz/tests/test_fuzz_unix_socket_kea_dhcp4.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if ! sudo -n true; then exec sudo -E -- "${0}" "${@}"; fi
+
+script_path=$(cd "$(dirname "${0}")" && pwd)
+
+script_basename=$(basename "${0}")
+
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
+
+"${script_path}/../${tested_binary}"
diff --git a/fuzz/tests/test_fuzz_unix_socket_kea_dhcp6.sh b/fuzz/tests/test_fuzz_unix_socket_kea_dhcp6.sh
new file mode 100755
index 0000000000..416b72a656
--- /dev/null
+++ b/fuzz/tests/test_fuzz_unix_socket_kea_dhcp6.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if ! sudo -n true; then exec sudo -E -- "${0}" "${@}"; fi
+
+script_path=$(cd "$(dirname "${0}")" && pwd)
+
+script_basename=$(basename "${0}")
+
+tested_binary=$(printf '%s' "${script_basename}" | sed 's/test_//g;s/.sh//g')
+
+"${script_path}/../${tested_binary}"