]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3605] fixed fuzz on BSD-like systems
authorRazvan Becheriu <razvan@isc.org>
Thu, 24 Oct 2024 16:50:27 +0000 (19:50 +0300)
committerRazvan Becheriu <razvan@isc.org>
Thu, 24 Oct 2024 17:39:35 +0000 (20:39 +0300)
fuzz/fuzz_packets_kea_dhcp4.cc
fuzz/fuzz_packets_kea_dhcp6.cc
fuzz/main.cc
src/lib/dhcpsrv/tests/packet_fuzzer_unittest.cc

index ae335fdc61f0dc7733bf473467310bc919123a5a..50e01cbe6653060c50b990fc9252f373f9eda58a 100644 (file)
@@ -43,8 +43,16 @@ LLVMFuzzerInitialize() {
 
     setenv("KEA_DHCP4_FUZZING_ROTATE_PORT", "true", 0);
 
+    if (if_nametoindex("lo") > 0) {
+        KEA_DHCP4_FUZZING_INTERFACE = string("lo");
+    } else if (if_nametoindex("lo0") > 0) {
+        KEA_DHCP4_FUZZING_INTERFACE = string("lo0");
+    }
+
     char const* interface(getenv("KEA_DHCP4_FUZZING_INTERFACE"));
-    KEA_DHCP4_FUZZING_INTERFACE = string(interface ? interface : "lo");
+    if (interface) {
+        KEA_DHCP4_FUZZING_INTERFACE = string(interface);
+    }
 
     char const* address(getenv("KEA_DHCP4_FUZZING_ADDRESS"));
     KEA_DHCP4_FUZZING_ADDRESS = string(address ? address : "127.0.0.1");
index 2a98d6e66feb008c5964d876697d7732b098d0ce..68354503276babaec91f5c82722852885d36e4a8 100644 (file)
@@ -43,8 +43,16 @@ LLVMFuzzerInitialize() {
 
     setenv("KEA_DHCP6_FUZZING_ROTATE_PORT", "true", 0);
 
+    if (if_nametoindex("lo") > 0) {
+        KEA_DHCP6_FUZZING_INTERFACE = string("lo");
+    } else if (if_nametoindex("lo0") > 0) {
+        KEA_DHCP6_FUZZING_INTERFACE = string("lo0");
+    }
+
     char const* interface(getenv("KEA_DHCP6_FUZZING_INTERFACE"));
-    KEA_DHCP6_FUZZING_INTERFACE = string(interface ? interface : "lo");
+    if (interface) {
+        KEA_DHCP6_FUZZING_INTERFACE = string(interface);
+    }
 
     char const* address(getenv("KEA_DHCP6_FUZZING_ADDRESS"));
     KEA_DHCP6_FUZZING_ADDRESS = string(address ? address : "::1");
index c3d8f2606c3111ec952798e2cb131becc5b1a5c9..b9445d6f90c1294c0733a969abcc482dc993c7f8 100644 (file)
@@ -81,7 +81,7 @@ main(int, char* argv[]) {
 
         for (string& f : files) {
             // Read content from file.
-            basic_ifstream<uint8_t> file(f, ios::binary);
+            ifstream file(f, ios::binary);
 
             if (!file.is_open()) {
                 cerr << "ERROR: could not open file " << f << endl;
@@ -95,7 +95,7 @@ main(int, char* argv[]) {
 
             // Read the entire file into a vector.
             vector<uint8_t> buffer(bytes);
-            file.read(buffer.data(), bytes);
+            file.read(reinterpret_cast<char*>(buffer.data()), bytes);
 
             file.close();
 
index 7cfff5254a1ba97fb9be28f6bd0ffbc3587c0917..77de1c44b420fcd848a35700dd939292b3845806 100644 (file)
@@ -21,8 +21,7 @@ TEST(PacketFuzzerTest, constructor) {
     // v6 requires valid interface. Skip positive test case.
 
     // Negative test cases
-    EXPECT_THROW_MSG(PacketFuzzer(547, "invalid_eth%", "fe80::1"), FuzzInitFail,
-                     "error retrieving interface ID for invalid_eth%: No such device");
+    EXPECT_THROW(PacketFuzzer(547, "invalid_eth%", "fe80::1"), FuzzInitFail);
     EXPECT_THROW_MSG(PacketFuzzer(1234, "testeth", "abcd"), isc::asiolink::IOError,
                      "Failed to convert string to address 'abcd': Invalid argument");
 }