Exemplo n.º 1
0
def gcb_build_oss_fuzz_project_coverage(benchmark: str) -> Tuple[int, str]:
    """Build a coverage build of OSS-Fuzz-based benchmark |benchmark| on GCB."""
    project = benchmark_utils.get_project(benchmark)
    oss_fuzz_builder_hash = benchmark_utils.get_oss_fuzz_builder_hash(
        benchmark)
    substitutions = {
        '_GCS_COVERAGE_BINARIES_DIR':
        exp_path.gcs(get_coverage_binaries_dir()),
        '_OSS_FUZZ_PROJECT': project,
        '_OSS_FUZZ_BUILDER_HASH': oss_fuzz_builder_hash,
    }
    config_file = get_build_config_file('oss-fuzz-coverage.yaml')
    config_name = 'oss-fuzz-{project}-coverage-hash-{hash}'.format(
        project=project, hash=oss_fuzz_builder_hash)
    return gcb_build(config_file, config_name, substitutions)
Exemplo n.º 2
0
def _build_oss_fuzz_project_fuzzer(benchmark: str,
                                   fuzzer: str) -> Tuple[int, str]:
    """Build a |benchmark|, |fuzzer| runner image on GCB."""
    project = benchmark_utils.get_project(benchmark)
    oss_fuzz_builder_hash = benchmark_utils.get_oss_fuzz_builder_hash(benchmark)
    substitutions = {
        '_OSS_FUZZ_PROJECT': project,
        '_FUZZER': fuzzer,
        '_OSS_FUZZ_BUILDER_HASH': oss_fuzz_builder_hash,
    }
    config_file = get_build_config_file('oss-fuzz-fuzzer.yaml')
    config_name = 'oss-fuzz-{project}-fuzzer-{fuzzer}-hash-{hash}'.format(
        project=project, fuzzer=fuzzer, hash=oss_fuzz_builder_hash)

    return _build(config_file, config_name, substitutions)
Exemplo n.º 3
0
def add_oss_fuzz_corpus(benchmark, oss_fuzz_corpora_dir):
    """Add latest public corpus from OSS-Fuzz as the seed corpus for various
    fuzz targets."""
    project = benchmark_utils.get_project(benchmark)
    fuzz_target = benchmark_utils.get_fuzz_target(benchmark)

    if not fuzz_target.startswith(project):
        full_fuzz_target = '%s_%s' % (project, fuzz_target)
    else:
        full_fuzz_target = fuzz_target

    src_corpus_url = _OSS_FUZZ_CORPUS_BACKUP_URL_FORMAT.format(
        project=project, fuzz_target=full_fuzz_target)
    dest_corpus_url = os.path.join(oss_fuzz_corpora_dir, f'{benchmark}.zip')
    gsutil.cp(src_corpus_url, dest_corpus_url, parallel=True, expect_zero=False)
Exemplo n.º 4
0
def _build_oss_fuzz_project_fuzzer(benchmark: str,
                                   fuzzer: str) -> Tuple[int, str]:
    """Build a |benchmark|, |fuzzer| runner image on GCB."""
    underlying_fuzzer = fuzzer_config_utils.get_by_variant_name(
        fuzzer)['fuzzer']
    project = benchmark_utils.get_project(benchmark)
    oss_fuzz_builder_hash = benchmark_utils.get_oss_fuzz_builder_hash(benchmark)
    substitutions = {
        '_OSS_FUZZ_PROJECT': project,
        '_BENCHMARK': benchmark,
        '_FUZZER': fuzzer,
        '_UNDERLYING_FUZZER': underlying_fuzzer,
        '_OSS_FUZZ_BUILDER_HASH': oss_fuzz_builder_hash,
    }
    config_file = _add_build_arguments_to_config(
        get_build_config_file('oss-fuzz-fuzzer.yaml'), fuzzer)
    config_name = 'oss-fuzz-{project}-fuzzer-{fuzzer}-hash-{hash}'.format(
        project=project, fuzzer=fuzzer, hash=oss_fuzz_builder_hash)

    return _build(config_file, config_name, substitutions)
Exemplo n.º 5
0
def test_get_project_non_oss_fuzz_benchmark():
    """Test that we can't get the project of a non-OSS-Fuzz benchmark."""
    with pytest.raises(ValueError):
        benchmark_utils.get_project(OTHER_BENCHMARK)
Exemplo n.º 6
0
def test_get_project_oss_fuzz_benchmark(oss_fuzz_benchmark):
    """Test that we can get the project of an OSS-Fuzz benchmark."""
    assert benchmark_utils.get_project(
        oss_fuzz_benchmark) == conftest.OSS_FUZZ_BENCHMARK_CONFIG['project']