def test_basic(self, mock_sysrandom): """Basic test.""" mock_sysrandom.return_value.randint = lambda x, y: 1337 input_data = ('[libfuzzer]\n' 'max_len=9001\n' 'dict=blah.dict\n' 'blah=9002\n' 'rand=random(1, 100)\n' '[asan]\n' 'detect_leaks=0\n' '[msan]\n' 'msan_option=1\n' '[ubsan]\n' 'ubsan_option=0\n') self.fs.CreateFile('/path/blah.options', contents=input_data) self.fs.CreateFile('/path/blah.dict', contents=input_data) fuzzer_options = options.FuzzerOptions('/path/blah.options') fuzzer_arguments = fuzzer_options.get_engine_arguments('libfuzzer') self.assertListEqual(sorted(fuzzer_arguments.list()), [ '-blah=9002', '-dict=/path/blah.dict', '-max_len=9001', '-rand=1337' ]) self.assertDictEqual( fuzzer_arguments.dict(), { 'blah': '9002', 'dict': '/path/blah.dict', 'max_len': '9001', 'rand': '1337' }) self.assertDictEqual(fuzzer_options.get_asan_options(), {'detect_leaks': '0'}) self.assertDictEqual(fuzzer_options.get_msan_options(), {'msan_option': '1'}) self.assertDictEqual(fuzzer_options.get_ubsan_options(), {'ubsan_option': '0'}) self.assertEqual(fuzzer_arguments['max_len'], '9001') self.assertEqual(fuzzer_arguments.get('max_len', constructor=int), 9001) self.assertEqual(fuzzer_arguments.get('noexist', constructor=int), None)
def test_get_libfuzzer_flags(self): """Test get_libfuzzer_flags logic.""" fuzz_target = data_handler.get_fuzz_target('libFuzzer_test_fuzzer') context = corpus_pruning_task.Context( fuzz_target, [], corpus_pruning_task.Pollination.RANDOM, None) runner = corpus_pruning_task.Runner(self.build_dir, context) flags = runner.get_libfuzzer_flags() expected_default_flags = [ '-timeout=5', '-rss_limit_mb=2560', '-max_len=5242880', '-detect_leaks=1', '-use_value_profile=1' ] six.assertCountEqual(self, flags, expected_default_flags) runner.fuzzer_options = options.FuzzerOptions( os.path.join(self.build_dir, 'test_get_libfuzzer_flags.options')) flags = runner.get_libfuzzer_flags() expected_custom_flags = [ '-timeout=5', '-rss_limit_mb=2560', '-max_len=1337', '-detect_leaks=0', '-use_value_profile=1' ] six.assertCountEqual(self, flags, expected_custom_flags)