Example #1
0
 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'))
Example #2
0
 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'))
Example #3
0
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