mirror of
https://github.com/systemd/systemd
synced 2025-10-05 16:03:15 +02:00
Those were added before 0.61 which is our minimum version. Dots were dropped from the end of some messages. Most messages did not have the trailing dot. 0.63 added support for multi-line f-strings. We can't use those yet.
64 lines
2.4 KiB
Meson
64 lines
2.4 KiB
Meson
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
generate_directives_py = files('generate-directives.py')
|
|
|
|
fuzz_regression_tests = {}
|
|
|
|
directives = [['fuzz-network-parser', 'directives.network', networkd_network_gperf_gperf],
|
|
['fuzz-netdev-parser', 'directives.netdev', networkd_netdev_gperf_gperf],
|
|
['fuzz-link-parser', 'directives.link', udev_link_gperf_gperf],
|
|
]
|
|
|
|
foreach tuple : directives
|
|
directive = custom_target(
|
|
output: tuple[1],
|
|
command: [generate_directives_py, tuple[2]],
|
|
capture: true)
|
|
|
|
dict = { 'directives' : [directive] }
|
|
fuzz_regression_tests += { tuple[0] : dict }
|
|
endforeach
|
|
|
|
unit_directives = []
|
|
foreach section : ['Automount', 'Mount', 'Path', 'Scope', 'Service', 'Slice', 'Socket', 'Swap', 'Timer']
|
|
unit_type = section.to_lower()
|
|
sec_rx = section == 'Service' ? '(Service|Unit|Install)' : section
|
|
name = f'directives.@unit_type@'
|
|
unit_directives += custom_target(
|
|
output: name,
|
|
command: [generate_directives_py, load_fragment_gperf_gperf, sec_rx, unit_type],
|
|
capture: true)
|
|
endforeach
|
|
dict = { 'directives' : unit_directives }
|
|
fuzz_regression_tests += { 'fuzz-unit-file' : dict }
|
|
|
|
############################################################
|
|
|
|
fuzz_testsdir = 'test/fuzz'
|
|
|
|
if git.found() and fs.is_dir(meson.project_source_root() / '.git')
|
|
out = run_command(env, '-u', 'GIT_WORK_TREE',
|
|
git, '--git-dir=@0@/.git'.format(meson.project_source_root()),
|
|
'ls-files', ':/@0@/*/*'.format(fuzz_testsdir),
|
|
check: true)
|
|
else
|
|
out = run_command(sh, '-c', 'cd "@0@"; echo @1@/*/*'.format(meson.project_source_root(), fuzz_testsdir), check: true)
|
|
endif
|
|
|
|
# Add crafted fuzz inputs we have in the repo
|
|
foreach p : out.stdout().split()
|
|
# Remove the last entry which is ''.
|
|
#
|
|
# Also, backslashes get mangled, so skip test. See
|
|
# https://github.com/mesonbuild/meson/issues/1564.
|
|
if p.contains('\\')
|
|
continue
|
|
endif
|
|
fuzzer = fs.name(fs.parent(p))
|
|
fuzz_in = fs.name(p)
|
|
|
|
dict = fuzz_regression_tests.get(fuzzer, {})
|
|
dict += { 'files' : dict.get('files', []) + files(fuzzer / fuzz_in) }
|
|
fuzz_regression_tests += { fuzzer : dict }
|
|
endforeach
|