xref: /freebsd/contrib/pkgconf/fuzzer/meson.build (revision 592efe252472a3385acf36b1f49ecf710a7f3d9c)
1fuzzer_link_args = [
2  '-fsanitize=fuzzer',
3  '-Wl,--wrap=malloc',
4  '-Wl,--wrap=calloc',
5  '-Wl,--wrap=realloc',
6  '-Wl,--wrap=reallocarray',
7  '-Wl,--wrap=strdup',
8  '-Wl,--wrap=strndup',
9]
10
11parser_fuzzer_exe = executable(
12  'parser-fuzzer',
13  'parser-fuzzer.c',
14  'alloc-inject.c',
15  dependencies: dep_libpkgconf,
16  include_directories: include_directories('..'),
17  install: false,
18  c_args: ['-fsanitize=fuzzer'],
19  link_args: fuzzer_link_args,
20)
21
22solver_fuzzer_exe = executable(
23  'solver-fuzzer',
24  'solver-fuzzer.c',
25  'alloc-inject.c',
26  dependencies: dep_libpkgconf,
27  include_directories: include_directories('..'),
28  install: false,
29  c_args: ['-fsanitize=fuzzer'],
30  link_args: fuzzer_link_args,
31)
32
33spdxtool_fuzzer_exe = executable(
34  'spdxtool-fuzzer',
35  'spdxtool-fuzzer.c',
36  'alloc-inject.c',
37  '../cli/spdxtool/core.c',
38  '../cli/spdxtool/software.c',
39  '../cli/spdxtool/serialize.c',
40  '../cli/spdxtool/simplelicensing.c',
41  '../cli/spdxtool/util.c',
42  '../cli/spdxtool/generate.c',
43  dependencies: dep_libpkgconf,
44  include_directories: include_directories('..', '../cli/spdxtool'),
45  install: false,
46  c_args: ['-fsanitize=fuzzer'],
47  link_args: fuzzer_link_args,
48)
49
50fuzz_root = join_paths(meson.project_build_root(), 'fuzz')
51corpus_dir = join_paths(fuzz_root, 'corpus')
52solver_corpus_dir = join_paths(fuzz_root, 'solver-corpus')
53spdxtool_corpus_dir = join_paths(fuzz_root, 'spdxtool-corpus')
54seed_dir = join_paths(meson.project_source_root(), 'tests', 'lib1')
55solver_seed_dir = join_paths(meson.project_source_root(), 'fuzzer', 'solver-corpus')
56
57run_target(
58  'fuzz-prepare',
59  command: ['mkdir', '-p', corpus_dir]
60)
61
62run_target(
63  'fuzz-parser',
64  command: [parser_fuzzer_exe, corpus_dir, seed_dir]
65)
66
67run_target(
68  'fuzz-solver',
69  command: [solver_fuzzer_exe, solver_corpus_dir, solver_seed_dir]
70)
71
72run_target(
73  'fuzz-spdxtool',
74  command: [spdxtool_fuzzer_exe, spdxtool_corpus_dir, solver_seed_dir]
75)
76