]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3605] Razvan's fix for ASAN warnings in fuzzing
authorAndrei Pavel <andrei@isc.org>
Tue, 22 Oct 2024 07:50:35 +0000 (10:50 +0300)
committerAndrei Pavel <andrei@isc.org>
Wed, 23 Oct 2024 13:40:31 +0000 (16:40 +0300)
fuzz/fuzz_http_endpoint.cc
fuzz/main.cc

index d9ef1e083420e71c2eba37cd22956bdbeebe7402..ddddd77f8d3c873ad9da3e31beaac690fabc87f4 100644 (file)
@@ -164,8 +164,9 @@ LLVMFuzzerTestOneInput(uint8_t const* data, size_t size) {
         }
     }
     listener.stop();
-    io_service->poll();
     client.stop();
+    run_io_service_timer.cancel();
+    io_service->poll();
     MultiThreadingMgr::instance().setMode(false);
 
     return 0;
index b08abaf938b5db8d98b8bb7a44f8a0a4e1e17687..c3d8f2606c3111ec952798e2cb131becc5b1a5c9 100644 (file)
@@ -6,14 +6,17 @@
 
 #include <config.h>
 
+#include <exceptions/exceptions.h>
 #include <util/filesystem.h>
 #include <fuzz.h>
 
 #include <cassert>
 #include <cstdio>
+#include <cstring>
 #include <fstream>
 #include <iostream>
 #include <list>
+#include <memory>
 #include <sstream>
 #include <vector>
 
@@ -22,6 +25,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+using namespace isc;
 using namespace isc::util::file;
 using namespace std;
 
@@ -52,7 +56,11 @@ main(int, char* argv[]) {
         list<string> files;
 
         struct dirent *dp;
-        DIR *dfd(opendir(p.str().c_str()));
+        DIR *dfd(opendir(directory.c_str()));
+        if (!dfd) {
+            isc_throw(Unexpected, "opendir failed " << directory << ": " << strerror(errno));
+        }
+        std::unique_ptr<DIR, void(*)(DIR*)> defer(dfd, [](DIR* d) { closedir(d); });
         while ((dp = readdir(dfd)) != nullptr) {
             string file(dp->d_name);
             if (file == "." || file == "..") {