1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-27 01:55:22 +03:00

meson: Use dicts for fuzzer definitions

This commit is contained in:
Jan Janssen 2023-01-25 17:39:12 +01:00
parent a9a7153cd2
commit 2ed35b2f3e
12 changed files with 205 additions and 142 deletions

View File

@ -4181,17 +4181,15 @@ endif
############################################################ ############################################################
foreach fuzzer : simple_fuzzers foreach fuzzer : simple_fuzzers
fuzzers += [ [[fuzzer]] ] fuzzers += { 'sources' : [fuzzer] }
endforeach endforeach
fuzzer_exes = [] fuzzer_exes = []
foreach tuple : fuzzers foreach fuzzer : fuzzers
sources = tuple[0] sources = fuzzer.get('sources')
link_with = tuple.length() > 1 and tuple[1].length() > 0 ? tuple[1] : [libshared] base = fuzzer.get('base', {})
dependencies = tuple.length() > 2 ? tuple[2] : [] dependencies = [base.get('dependencies', []), fuzzer.get('dependencies', [])]
incs = tuple.length() > 3 and tuple[3].length() > 0 ? tuple[3] : includes
defs = tuple.length() > 4 ? tuple[4] : []
link_args = [] link_args = []
if want_ossfuzz if want_ossfuzz
@ -4203,7 +4201,7 @@ foreach tuple : fuzzers
link_args += ['-fsanitize=fuzzer'] link_args += ['-fsanitize=fuzzer']
endif endif
else else
sources += 'src/fuzz/fuzz-main.c' sources += files('src/fuzz/fuzz-main.c')
endif endif
sources += fuzz_generated_directives sources += fuzz_generated_directives
@ -4213,11 +4211,14 @@ foreach tuple : fuzzers
exe = executable( exe = executable(
name, name,
sources, sources,
include_directories : [incs, include_directories('src/fuzz')], include_directories : [
link_with : link_with, base.get('includes', []),
dependencies : [dependencies, fuzzer.get('includes', includes),
versiondep], include_directories('src/fuzz'),
c_args : defs + test_cflags, ],
link_with : [base.get('link_with', []), fuzzer.get('link_with', libshared)],
dependencies : [dependencies, versiondep],
c_args : [test_cflags, fuzzer.get('c_args', [])],
link_args: link_args, link_args: link_args,
install : false, install : false,
build_by_default : fuzzer_build) build_by_default : fuzzer_build)

View File

@ -411,9 +411,25 @@ if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64']
}, },
] ]
fuzzers += [ fuzzers += [
[files('fuzz-bcd.c', 'bcd.c', 'efi-string.c')], {
[files('fuzz-efi-string.c', 'efi-string.c')], 'sources' : files(
[files('fuzz-efi-printf.c', 'efi-string.c')], 'fuzz-bcd.c',
'bcd.c',
'efi-string.c'
),
},
{
'sources' : files(
'fuzz-efi-string.c',
'efi-string.c'
),
},
{
'sources' : files(
'fuzz-efi-printf.c',
'efi-string.c'
),
},
] ]
endif endif

View File

@ -185,8 +185,12 @@ test_core_base = {
} }
fuzzers += [ fuzzers += [
[files('fuzz-unit-file.c'), {
[libcore, 'sources' : files('fuzz-unit-file.c'),
libshared], 'link_with' : [
[libmount]], libcore,
libshared
],
'dependencies' : libmount,
},
] ]

View File

@ -69,9 +69,12 @@ endif
############################################################ ############################################################
fuzzers += [ fuzzers += [
[files('fuzz-journal-remote.c'), {
[libsystemd_journal_remote, 'sources' : files('fuzz-journal-remote.c'),
libshared], 'link_with' : [
[], libshared,
[journal_includes]], libsystemd_journal_remote,
],
'includes' : journal_includes,
},
] ]

View File

@ -111,40 +111,52 @@ tests += [
}, },
] ]
fuzzer_journald_base = {
'link_with' : [libjournal_core, libshared],
'dependencies' : [libselinux],
}
fuzzers += [ fuzzers += [
[files('fuzz-journald-audit.c', {
'fuzz-journald.c'), 'sources' : files(
[libjournal_core, 'fuzz-journald-audit.c',
libshared], 'fuzz-journald.c',
[libselinux]], ),
'base' : fuzzer_journald_base,
[files('fuzz-journald-kmsg.c', },
'fuzz-journald.c'), {
[libjournal_core, 'sources' : files(
libshared], 'fuzz-journald-kmsg.c',
[libselinux]], 'fuzz-journald.c',
),
[files('fuzz-journald-native.c', 'base' : fuzzer_journald_base,
'fuzz-journald.c'), },
[libjournal_core, {
libshared], 'sources' : files(
[libselinux]], 'fuzz-journald-native.c',
'fuzz-journald.c',
[files('fuzz-journald-native-fd.c', ),
'fuzz-journald.c'), 'base' : fuzzer_journald_base,
[libjournal_core, },
libshared], {
[libselinux]], 'sources' : files(
'fuzz-journald-native-fd.c',
[files('fuzz-journald-stream.c', 'fuzz-journald.c',
'fuzz-journald.c'), ),
[libjournal_core, 'base' : fuzzer_journald_base,
libshared], },
[libselinux]], {
'sources' : files(
[files('fuzz-journald-syslog.c', 'fuzz-journald-stream.c',
'fuzz-journald.c'), 'fuzz-journald.c',
[libjournal_core, ),
libshared], 'base' : fuzzer_journald_base,
[libselinux]], },
{
'sources' : files(
'fuzz-journald-syslog.c',
'fuzz-journald.c',
),
'base' : fuzzer_journald_base,
},
] ]

View File

@ -91,28 +91,33 @@ tests += [
}, },
] ]
fuzzer_network_base = {
'link_with' : [libshared, libsystemd_network],
}
fuzzers += [ fuzzers += [
[files('fuzz-dhcp-client.c'), {
[libshared, 'sources' : files('fuzz-dhcp-client.c'),
libsystemd_network]], 'base' : fuzzer_network_base,
},
[files('fuzz-dhcp6-client.c'), {
[libshared, 'sources' : files('fuzz-dhcp6-client.c'),
libsystemd_network]], 'base' : fuzzer_network_base,
},
[files('fuzz-dhcp-server.c'), {
[libsystemd_network, 'sources' : files('fuzz-dhcp-server.c'),
libshared]], 'base' : fuzzer_network_base,
},
[files('fuzz-dhcp-server-relay.c'), {
[libsystemd_network, 'sources' : files('fuzz-dhcp-server-relay.c'),
libshared]], 'base' : fuzzer_network_base,
},
[files('fuzz-lldp-rx.c'), {
[libshared, 'sources' : files('fuzz-lldp-rx.c'),
libsystemd_network]], 'base' : fuzzer_network_base,
},
[files('fuzz-ndisc-rs.c'), {
[libshared, 'sources' : files('fuzz-ndisc-rs.c'),
libsystemd_network]], 'base' : fuzzer_network_base,
},
] ]

View File

@ -171,20 +171,21 @@ if conf.get('ENABLE_NETWORKD') == 1
endif endif
endif endif
fuzzers += [ fuzzer_network_base = {
[files('fuzz-netdev-parser.c'), 'link_with' : [libnetworkd_core, libsystemd_network, networkd_link_with],
[libnetworkd_core, 'dependencies' : threads,
libsystemd_network, 'includes' : network_includes,
networkd_link_with], }
[threads],
network_includes],
[files('fuzz-network-parser.c'), fuzzers += [
[libnetworkd_core, {
libsystemd_network, 'sources' : files('fuzz-netdev-parser.c'),
networkd_link_with], 'base' : fuzzer_network_base,
[threads], },
network_includes], {
'sources' : files('fuzz-network-parser.c'),
'base' : fuzzer_network_base,
},
] ]
test_network_base = { test_network_base = {

View File

@ -66,14 +66,18 @@ tests += [
}, },
] ]
fuzzers += [ fuzzer_nspawn_base = {
[files('fuzz-nspawn-settings.c'), 'link_with' : [libshared, libnspawn_core],
[libshared, 'dependencies' : libseccomp
libnspawn_core], }
[libseccomp]],
[files('fuzz-nspawn-oci.c'), fuzzers += [
[libshared, {
libnspawn_core], 'sources' : files('fuzz-nspawn-settings.c'),
[libseccomp]], 'base' : fuzzer_nspawn_base,
},
{
'sources' : files('fuzz-nspawn-oci.c'),
'base' : fuzzer_nspawn_base,
},
] ]

View File

@ -187,23 +187,27 @@ tests += [
}, },
] ]
fuzzer_resolve_base = {
'link_with' : [libsystemd_resolve_core, libshared],
'dependencies' : [lib_openssl_or_gcrypt, libm],
}
fuzzers += [ fuzzers += [
[files('fuzz-dns-packet.c'), {
[libsystemd_resolve_core, 'sources' : files('fuzz-dns-packet.c'),
libshared], 'base' : fuzzer_resolve_base,
[lib_openssl_or_gcrypt, },
libm]], {
[files('fuzz-etc-hosts.c', 'sources' : files(
'resolved-etc-hosts.c'), 'fuzz-etc-hosts.c',
[libsystemd_resolve_core, 'resolved-etc-hosts.c',
libshared], ),
[lib_openssl_or_gcrypt, 'base' : fuzzer_resolve_base,
libm]], },
[files('fuzz-resource-record.c'), {
[libsystemd_resolve_core, 'sources' : files('fuzz-resource-record.c'),
libshared], 'base' : fuzzer_resolve_base,
[lib_openssl_or_gcrypt, },
libm]],
] ]
systemd_resolved_sources += files('resolved.c') systemd_resolved_sources += files('resolved.c')

View File

@ -48,8 +48,12 @@ else
endif endif
fuzzers += [ fuzzers += [
[files('fuzz-systemctl-parse-argv.c') + {
systemctl_sources, 'sources' : [
systemctl_link_with, files('fuzz-systemctl-parse-argv.c'),
[], [], ['-DFUZZ_SYSTEMCTL_PARSE_ARGV']] systemctl_sources,
],
'link_with' : systemctl_link_with,
'c_args' : '-DFUZZ_SYSTEMCTL_PARSE_ARGV',
},
] ]

View File

@ -164,22 +164,27 @@ simple_fuzzers += files(
'fuzz-udev-rule-parse-value.c', 'fuzz-udev-rule-parse-value.c',
) )
fuzzer_udev_base = {
'link_with' : [libudevd_core, libshared],
'dependencies' : [threads, libacl],
}
fuzzers += [ fuzzers += [
[files('net/fuzz-link-parser.c'), {
[libudevd_core, 'sources' : files('net/fuzz-link-parser.c'),
libshared], 'includes' : udev_includes,
[threads, 'base' : fuzzer_udev_base,
libacl], },
udev_includes], {
'sources' : files('fuzz-udev-rules.c'),
[files('fuzz-udev-rules.c'), 'base' : fuzzer_udev_base,
[libudevd_core, },
libshared], {
[threads, 'sources' : files(
libacl]], 'fido_id/fuzz-fido-id-desc.c',
'fido_id/fido_id_desc.c',
[files('fido_id/fuzz-fido-id-desc.c', ),
'fido_id/fido_id_desc.c')], },
] ]
test_libudev_base = { test_libudev_base = {

View File

@ -15,6 +15,10 @@ tests += [
] ]
fuzzers += [ fuzzers += [
[files('fuzz-xdg-desktop.c', {
'xdg-autostart-service.c')], 'sources' : files(
'fuzz-xdg-desktop.c',
'xdg-autostart-service.c',
),
},
] ]