def test_project_with_special_chars(self): self.assertEqual( 'libFuzzer_third_party-llvm_clang_fuzzer', data_types.fuzz_target_fully_qualified_name( 'libFuzzer', '//third_party/llvm', 'clang_fuzzer')) self.assertEqual( 'afl_third_party-aspell-aspell_5_aspell_fuzzer', data_types.fuzz_target_fully_qualified_name( 'afl', 'third_party:aspell:aspell_5', 'aspell_fuzzer'))
def test_project_with_regular_chars(self): self.assertEqual( 'libFuzzer_myproject_json_fuzzer', data_types.fuzz_target_fully_qualified_name( 'libFuzzer', 'myproject', 'json_fuzzer')) self.assertEqual( 'afl_test_project_hash_fuzzer', data_types.fuzz_target_fully_qualified_name( 'afl', 'test_project', 'hash_fuzzer'))
def _get_variant_testcase_for_job(testcase, job_type): """Return a testcase entity for variant task use. This changes the fuzz target params for a particular fuzzing engine.""" if testcase.job_type == job_type: # Update stack operation on same testcase. return testcase if not environment.is_engine_fuzzer_job(testcase.job_type): # For blackbox fuzzer testcases, there is no change of fuzzer required. return testcase engine_name = environment.get_engine_for_job(job_type) project = data_handler.get_project_name(job_type) binary_name = testcase.get_metadata("fuzzer_binary_name") fully_qualified_fuzzer_name = data_types.fuzz_target_fully_qualified_name( engine_name, project, binary_name) variant_testcase = data_types.clone_entity(testcase) variant_testcase.key = testcase.key variant_testcase.fuzzer_name = engine_name variant_testcase.overridden_fuzzer_name = fully_qualified_fuzzer_name variant_testcase.job_type = job_type # Remove put() method to avoid updates. DO NOT REMOVE THIS. variant_testcase.put = lambda: None return variant_testcase
def find_fuzz_target(engine, target_name, job_name): """Find a fuzz target given the engine, target name (which may or may not be prefixed with project), and job.""" project_name = data_handler.get_project_name(job_name) candidate_name = data_types.fuzz_target_fully_qualified_name( engine, project_name, target_name) target = data_handler.get_fuzz_target(candidate_name) if target: return target.fully_qualified_name(), target.binary return None, None
def find_fuzz_target(engine, target_name, job_name): """Return fuzz target values given the engine, target name (which may or may not be prefixed with project), and job.""" project_name = data_handler.get_project_name(job_name) candidate_name = data_types.fuzz_target_fully_qualified_name( engine, project_name, target_name) target = data_handler.get_fuzz_target(candidate_name) if not target: raise helpers.EarlyExitException('Fuzz target does not exist.', 400) return target.fully_qualified_name(), target.binary