]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3729] Add fuzz meson files, fix gss and user_chk
authorAndrei Pavel <andrei@isc.org>
Tue, 11 Feb 2025 13:47:46 +0000 (15:47 +0200)
committerAndrei Pavel <andrei@isc.org>
Thu, 13 Feb 2025 08:06:32 +0000 (10:06 +0200)
fuzz/input/meson.build
fuzz/meson.build
fuzz/tests/meson.build
meson.build
src/hooks/dhcp/user_chk/tests/meson.build

index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a28169c4bbb85193e221d3b8eb069504df3ce934 100644 (file)
@@ -0,0 +1,42 @@
+install_data(
+    'fuzz_config_kea_dhcp4/empty',
+    'fuzz_config_kea_dhcp4/one-byte',
+    'fuzz_config_kea_dhcp6/empty',
+    'fuzz_config_kea_dhcp6/one-byte',
+    'fuzz_http_endpoint_kea_dhcp4/config-get',
+    'fuzz_http_endpoint_kea_dhcp4/config-get-with-service',
+    'fuzz_http_endpoint_kea_dhcp4/empty',
+    'fuzz_http_endpoint_kea_dhcp4/empty-json-map',
+    'fuzz_http_endpoint_kea_dhcp4/one-byte',
+    'fuzz_http_endpoint_kea_dhcp4/one-entry-json-map',
+    'fuzz_http_endpoint_kea_dhcp6/config-get',
+    'fuzz_http_endpoint_kea_dhcp6/config-get-with-service',
+    'fuzz_http_endpoint_kea_dhcp6/empty',
+    'fuzz_http_endpoint_kea_dhcp6/empty-json-map',
+    'fuzz_http_endpoint_kea_dhcp6/one-byte',
+    'fuzz_http_endpoint_kea_dhcp6/one-entry-json-map',
+    'fuzz_packets_kea_dhcp4/dhcp-payload-only',
+    'fuzz_packets_kea_dhcp4/empty',
+    'fuzz_packets_kea_dhcp4/full-dhcp-packet',
+    'fuzz_packets_kea_dhcp4/one-byte',
+    'fuzz_packets_kea_dhcp4/udp-header',
+    'fuzz_packets_kea_dhcp6/dhcp-payload-only',
+    'fuzz_packets_kea_dhcp6/empty',
+    'fuzz_packets_kea_dhcp6/full-dhcp-packet',
+    'fuzz_packets_kea_dhcp6/one-byte',
+    'fuzz_packets_kea_dhcp6/udp-header',
+    'fuzz_unix_socket_kea_dhcp4/config-get',
+    'fuzz_unix_socket_kea_dhcp4/config-get-with-service',
+    'fuzz_unix_socket_kea_dhcp4/empty',
+    'fuzz_unix_socket_kea_dhcp4/empty-json-map',
+    'fuzz_unix_socket_kea_dhcp4/one-byte',
+    'fuzz_unix_socket_kea_dhcp4/one-entry-json-map',
+    'fuzz_unix_socket_kea_dhcp6/config-get',
+    'fuzz_unix_socket_kea_dhcp6/config-get-with-service',
+    'fuzz_unix_socket_kea_dhcp6/empty',
+    'fuzz_unix_socket_kea_dhcp6/empty-json-map',
+    'fuzz_unix_socket_kea_dhcp6/one-byte',
+    'fuzz_unix_socket_kea_dhcp6/one-entry-json-map',
+    install_dir: 'share/kea/fuzz',
+    preserve_path: true,
+)
index 73103df1efb043cd563694154e693cb66aabef86..13aa0c3d4ca0f020910a438b07d3d34bced92548 100644 (file)
@@ -2,33 +2,95 @@ subdir('input')
 subdir('tests')
 
 fuzz_sources = ['fuzz.cc', 'fuzz.h']
-cpp_flags = []
+cpp_flags = [
+    f'-DKEA_LFC_SOURCES="@KEA_LFC@"',
+    f'-DKEA_LFC_INSTALLATION="@PREFIX@/sbin/kea-lfc"',
+]
 if FUZZING_IN_CI
     cpp_flags = ['-fsanitize=fuzzer', '-gdwarf-4']
 else
     fuzz_sources += ['main.cc']
 endif
 
+includes = [include_directories('.')] + INCLUDES
+
 fuzz_lib = static_library(
     'fuzz_lib',
     fuzz_sources,
-    cpp_args: cpp_flags + [
-        f'-DKEA_LFC_SOURCES="@KEA_LFC@"',
-        f'-DKEA_LFC_INSTALLATION="@PREFIX@/sbin/kea-lfc"',
-    ],
+    cpp_args: cpp_flags,
     dependencies: [crypto],
-    include_directories: [include_directories('.')] + INCLUDES,
+    include_directories: includes,
+    link_with: LIBS_BUILT_SO_FAR,
 )
 
 executable(
     'fuzz_config_kea_dhcp4',
     'fuzz_config_kea_dhcp4.cc',
     fuzz_sources,
-    cpp_args: cpp_flags + [
-        f'-DKEA_LFC_SOURCES="@KEA_LFC@"',
-        f'-DKEA_LFC_INSTALLATION="@PREFIX@/sbin/kea-lfc"',
-    ],
-    dependencies: [crypto],
-    include_directories: [include_directories('.')] + INCLUDES,
+    cpp_args: cpp_flags,
+    include_directories: includes,
+    link_with: [dhcp4_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
+)
+
+executable(
+    'fuzz_config_kea_dhcp6',
+    'fuzz_config_kea_dhcp6.cc',
+    fuzz_sources,
+    cpp_args: cpp_flags,
+    include_directories: includes,
+    link_with: [dhcp6_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
+)
+
+executable(
+    'fuzz_http_endpoint_kea_dhcp4',
+    'fuzz_http_endpoint_kea_dhcp4.cc',
+    fuzz_sources,
+    cpp_args: cpp_flags,
+    include_directories: includes,
     link_with: [dhcp4_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
 )
+
+executable(
+    'fuzz_http_endpoint_kea_dhcp6',
+    'fuzz_http_endpoint_kea_dhcp6.cc',
+    fuzz_sources,
+    cpp_args: cpp_flags,
+    include_directories: includes,
+    link_with: [dhcp6_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
+)
+
+executable(
+    'fuzz_packets_kea_dhcp4',
+    'fuzz_packets_kea_dhcp4.cc',
+    fuzz_sources,
+    cpp_args: cpp_flags,
+    include_directories: includes,
+    link_with: [dhcp4_lib, kea_dhcpsrv_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
+)
+
+executable(
+    'fuzz_packets_kea_dhcp6',
+    'fuzz_packets_kea_dhcp6.cc',
+    fuzz_sources,
+    cpp_args: cpp_flags,
+    include_directories: includes,
+    link_with: [dhcp6_lib, kea_dhcpsrv_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
+)
+
+executable(
+    'fuzz_unix_socket_kea_dhcp4',
+    'fuzz_unix_socket_kea_dhcp4.cc',
+    fuzz_sources,
+    cpp_args: cpp_flags,
+    include_directories: includes,
+    link_with: [dhcp4_lib, kea_testutils_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
+)
+
+executable(
+    'fuzz_unix_socket_kea_dhcp6',
+    'fuzz_unix_socket_kea_dhcp6.cc',
+    fuzz_sources,
+    cpp_args: cpp_flags,
+    include_directories: includes,
+    link_with: [dhcp6_lib, kea_testutils_lib, fuzz_lib] + LIBS_BUILT_SO_FAR,
+)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ba1b482c498cb67cbdc6ab93e8dde3e909efb416 100644 (file)
@@ -0,0 +1,32 @@
+test(
+    'test_fuzz_http_endpoint_kea_dhcp4.sh',
+    find_program('test_fuzz_http_endpoint_kea_dhcp4.sh'),
+)
+test(
+    'test_fuzz_packets_kea_dhcp6.sh',
+    find_program('test_fuzz_packets_kea_dhcp6.sh'),
+)
+test(
+    'test_fuzz_config_kea_dhcp4.sh',
+    find_program('test_fuzz_config_kea_dhcp4.sh'),
+)
+test(
+    'test_fuzz_packets_kea_dhcp4.sh',
+    find_program('test_fuzz_packets_kea_dhcp4.sh'),
+)
+test(
+    'test_fuzz_unix_socket_kea_dhcp6.sh',
+    find_program('test_fuzz_unix_socket_kea_dhcp6.sh'),
+)
+test(
+    'test_fuzz_config_kea_dhcp6.sh',
+    find_program('test_fuzz_config_kea_dhcp6.sh'),
+)
+test(
+    'test_fuzz_unix_socket_kea_dhcp4.sh',
+    find_program('test_fuzz_unix_socket_kea_dhcp4.sh'),
+)
+test(
+    'test_fuzz_http_endpoint_kea_dhcp6.sh',
+    find_program('test_fuzz_http_endpoint_kea_dhcp6.sh'),
+)
index 4e7f10f72a726a3fd17a75ce91c05027993053c9..5bbb8cb33e6dacf8fd90927467213bb6edc1f603 100644 (file)
@@ -1,9 +1,9 @@
-# Require meson >= 0.63.0 for preserve_path arg in install_headers.
+# Require meson >= 0.64.0 for preserve_path arg in install_data.
 project(
     'kea',
     'cpp',
     version: '2.7.7-git',
-    meson_version: '>=0.63.0',
+    meson_version: '>=0.64.0',
     default_options: ['default_library=shared'],
 )
 
@@ -29,7 +29,7 @@ KEA_ADMIN = f'@TOP_BUILD_DIR@/src/bin/admin/kea-admin'
 KEA_LFC = f'@TOP_BUILD_DIR@/src/bin/lfc/kea-lfc'
 TEST_CA_DIR = f'@TOP_SOURCE_DIR@/src/lib/asiolink/testutils/ca'
 DATABASE_SCRIPTS_DIR = f'@TOP_BUILD_DIR@/src/share/database/scripts'
-LEGAL_LOG_DIR=f'@PREFIX@/@RUN_STATE_DIR@/lib/kea'
+LEGAL_LOG_DIR = f'@PREFIX@/@RUN_STATE_DIR@/lib/kea'
 
 # TODO: Control it via a build option.
 FUZZING_IN_CI = false
@@ -42,8 +42,7 @@ conf_data = configuration_data(
         # 'ENABLE_DEBUG': false,
         # 'ENABLE_LOGGER_CHECKS': false,
         'EXTENDED_VERSION': '"tarball"',
-        # 'FUZZING': false,
-        # 'FUZZING_IN_CI': false,
+        'FUZZING': true,
         # 'HAS_UNDEFINED_PTHREAD_BEHAVIOR': false,
         # 'HAVE_AFL': false,
         # 'HAVE_BOOST_ASIO_COROUTINE_HPP': false,
@@ -165,11 +164,7 @@ if not crypto.found()
 endif
 
 # Kerberos
-krb5_config = disabler()
-krb5 = dependency('krb5', required: false)
-if not krb5.found()
-    krb5_config = find_program('krb5-config', required: false)
-endif
+krb5_config = find_program('krb5-config', required: false)
 if krb5_config.found()
     cflags = run_command([krb5_config, '--cflags', 'gssapi'], check: false)
     libs = run_command([krb5_config, '--libs', 'gssapi'], check: false)
@@ -180,6 +175,9 @@ if krb5_config.found()
         )
     endif
 endif
+if not krb5.found()
+    krb5 = dependency('krb5', required: false)
+endif
 
 # MySQL
 mysql = dependency('mariadb', required: false)
@@ -251,7 +249,9 @@ foreach dep : ['yang', 'yang-cpp', 'sysrepo', 'sysrepo-cpp']
     endif
 
     # Try adding lib to it. libyang and libyang-cpp define the wrong pkg-config.
-    netconf_deps = netconf_deps + {dep: dependency('lib' + dep, required: false)}
+    netconf_deps = netconf_deps + {
+        dep: dependency('lib' + dep, required: false),
+    }
     if netconf_deps[dep].found()
         continue
     endif
@@ -262,9 +262,7 @@ foreach dep : ['yang', 'yang-cpp', 'sysrepo', 'sysrepo-cpp']
         netconf_deps = netconf_deps + {
             dep: declare_dependency(
                 dependencies: [lib],
-                include_directories: include_directories(
-                    f'/opt/@dep@/include',
-                ),
+                include_directories: include_directories(f'/opt/@dep@/include'),
             ),
         }
     endif
index 0ea903e2bacead0754e12310fe29aeb5d4a42dbc..e06d5ac807dc6f8bba338ac2ec2848b351f43b98 100644 (file)
@@ -18,7 +18,7 @@ dhcp_user_chk_lib_tests = executable(
     'user_registry_unittests.cc',
     'user_unittests.cc',
     'userid_unittests.cc',
-    cpp_args: [f'-DTEST_DATA_BUILDDIR="@current_source_dir@"'],
+    cpp_args: [f'-DTEST_DATA_BUILDDIR="@current_build_dir@"'],
     dependencies: [gtest],
     include_directories: [include_directories('.'), include_directories('..')] + INCLUDES,
     link_with: [dhcp_user_chk_archive] + LIBS_BUILT_SO_FAR,