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