+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,
+)
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,
+)
+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'),
+)
-# 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'],
)
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
# '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,
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)
)
endif
endif
+if not krb5.found()
+ krb5 = dependency('krb5', required: false)
+endif
# MySQL
mysql = dependency('mariadb', required: false)
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
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
'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,