Ed Tanous | edee0a3 | 2025-03-16 17:40:04 -0700 | [diff] [blame] | 1 | jsonc_daccord = dependency( |
| 2 | 'jsoncdac', |
| 3 | default_options: ['default_library=static'], |
| 4 | ) |
Aushim Nagarkatti | ae8f6d9 | 2025-01-29 17:34:44 -0800 | [diff] [blame] | 5 | |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 6 | test_sources = files('base64_test.c', 'test-utils.c') |
John Chung | 197ea12 | 2024-05-03 19:57:55 +0800 | [diff] [blame] | 7 | |
Thu Nguyen | e42fb48 | 2024-10-15 14:43:11 +0000 | [diff] [blame] | 8 | test_include_dirs = ['.', '../include'] |
John Chung | 197ea12 | 2024-05-03 19:57:55 +0800 | [diff] [blame] | 9 | |
Ed Tanous | a84fc93 | 2024-07-15 13:48:35 -0700 | [diff] [blame] | 10 | cper_tests = executable( |
| 11 | 'cper-tests', |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 12 | 'ir-tests.c', |
Ed Tanous | d6b6263 | 2025-03-14 15:30:07 -0700 | [diff] [blame] | 13 | test_sources, |
Ed Tanous | a84fc93 | 2024-07-15 13:48:35 -0700 | [diff] [blame] | 14 | implicit_include_directories: false, |
| 15 | include_directories: include_directories(test_include_dirs), |
Ed Tanous | 10eb6de | 2024-10-03 17:23:12 -0700 | [diff] [blame] | 16 | dependencies: [ |
Ed Tanous | a366305 | 2025-03-16 12:54:36 -0700 | [diff] [blame] | 17 | json_c_dep, |
| 18 | jsonc_daccord, |
Ed Tanous | 10eb6de | 2024-10-03 17:23:12 -0700 | [diff] [blame] | 19 | libcper_parse_dep, |
| 20 | libcper_generate_dep, |
Ed Tanous | 10eb6de | 2024-10-03 17:23:12 -0700 | [diff] [blame] | 21 | ], |
John Chung | 197ea12 | 2024-05-03 19:57:55 +0800 | [diff] [blame] | 22 | ) |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 23 | test('test-cper-tests', cper_tests) |
Ed Tanous | 6070e1b | 2025-03-14 11:20:35 -0700 | [diff] [blame] | 24 | |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 25 | cc = meson.get_compiler('c') |
Ed Tanous | 6070e1b | 2025-03-14 11:20:35 -0700 | [diff] [blame] | 26 | |
| 27 | # Fuzzing only works on linux at this moment. osx clang doesn't have leak detector |
| 28 | is_darwin = host_machine.system().startswith('darwin') |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 29 | if (cc.get_id() == 'clang') and get_option('fuzz').allowed() and not is_darwin |
Ed Tanous | 7a531ff | 2025-03-14 17:06:49 -0700 | [diff] [blame] | 30 | sanitize = ['fuzzer'] |
Ed Tanous | 8121f7e | 2025-03-06 14:39:07 -0800 | [diff] [blame] | 31 | fuzz_args = [ |
Ed Tanous | 8121f7e | 2025-03-06 14:39:07 -0800 | [diff] [blame] | 32 | '-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION', |
Ed Tanous | edee0a3 | 2025-03-16 17:40:04 -0700 | [diff] [blame] | 33 | '-fsanitize=fuzzer,address,leak', |
Ed Tanous | 8121f7e | 2025-03-06 14:39:07 -0800 | [diff] [blame] | 34 | ] |
| 35 | |
| 36 | foreach fuzzer_test : ['fuzz_cper_buf_to_ir'] |
| 37 | fuzz_exe = executable( |
| 38 | fuzzer_test, |
Ed Tanous | edee0a3 | 2025-03-16 17:40:04 -0700 | [diff] [blame] | 39 | [fuzzer_test + '.c'] + libcper_parse_sources + edk_sources + 'test-utils.c' + libcper_generate_sources, |
Ed Tanous | 8121f7e | 2025-03-06 14:39:07 -0800 | [diff] [blame] | 40 | implicit_include_directories: false, |
| 41 | include_directories: include_directories(test_include_dirs), |
Ed Tanous | 8121f7e | 2025-03-06 14:39:07 -0800 | [diff] [blame] | 42 | c_args: fuzz_args, |
| 43 | link_args: fuzz_args, |
Ed Tanous | edee0a3 | 2025-03-16 17:40:04 -0700 | [diff] [blame] | 44 | dependencies: [json_c_dep, jsonc_daccord], |
Ed Tanous | 8121f7e | 2025-03-06 14:39:07 -0800 | [diff] [blame] | 45 | ) |
| 46 | test( |
| 47 | fuzzer_test, |
| 48 | fuzz_exe, |
| 49 | args: [ |
| 50 | '-max_total_time=10', |
| 51 | '-max_len=131072', |
| 52 | '-error_exitcode=1', |
| 53 | '-timeout_exitcode=2', |
| 54 | ], |
| 55 | ) |
| 56 | endforeach |
| 57 | endif |