mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-17 04:18:07 +00:00
Remove old libfuzzer dotnet
template (#2875)
### Context The original `libfuzzer dotnet` job template was a proof of concept that demonstrated how the `libfuzzer_fuzz` task could be used to express fuzzing via the (pre SharpFuzz 2.0) `libfuzzer-dotnet` tool. It (and its associated integration test) used a harness that linked an older version of SharpFuzz, and which is incompatible with LibFuzzerDotnetLoader (which requires SharpFuzz 2.0 or greater). ### Changes - Rename `libfuzzer dotnet_dll` job template to `libfuzzer dotnet`, making it the _only_ `libfuzzer-dotnet` template - Remove integration tests and docs for the old proof-of-concept job type ### Notice This is a breaking change. Closes #2874.
This commit is contained in:
@ -568,138 +568,6 @@ class Libfuzzer(Command):
|
||||
return helper.job
|
||||
|
||||
def dotnet(
|
||||
self,
|
||||
project: str,
|
||||
name: str,
|
||||
build: str,
|
||||
pool_name: PoolName,
|
||||
*,
|
||||
setup_dir: Directory,
|
||||
target_harness: str,
|
||||
vm_count: int = 1,
|
||||
inputs: Optional[Directory] = None,
|
||||
reboot_after_setup: bool = False,
|
||||
duration: int = 24,
|
||||
target_workers: Optional[int] = None,
|
||||
target_options: Optional[List[str]] = None,
|
||||
fuzzing_target_options: Optional[List[str]] = None,
|
||||
target_env: Optional[Dict[str, str]] = None,
|
||||
tags: Optional[Dict[str, str]] = None,
|
||||
wait_for_running: bool = False,
|
||||
wait_for_files: Optional[List[ContainerType]] = None,
|
||||
existing_inputs: Optional[Container] = None,
|
||||
readonly_inputs: Optional[Container] = None,
|
||||
debug: Optional[List[TaskDebugFlag]] = None,
|
||||
ensemble_sync_delay: Optional[int] = None,
|
||||
check_fuzzer_help: bool = True,
|
||||
expect_crash_on_failure: bool = False,
|
||||
notification_config: Optional[NotificationConfig] = None,
|
||||
) -> Optional[Job]:
|
||||
"""
|
||||
libfuzzer-dotnet task
|
||||
"""
|
||||
|
||||
# ensure containers exist
|
||||
if existing_inputs:
|
||||
self.onefuzz.containers.get(existing_inputs)
|
||||
|
||||
if readonly_inputs:
|
||||
self.onefuzz.containers.get(readonly_inputs)
|
||||
|
||||
harness = "libfuzzer-dotnet"
|
||||
|
||||
pool = self.onefuzz.pools.get(pool_name)
|
||||
if pool.os != OS.linux:
|
||||
raise Exception("libfuzzer-dotnet jobs are only compatible on linux")
|
||||
|
||||
target_exe = File(os.path.join(setup_dir, harness))
|
||||
if not os.path.exists(target_exe):
|
||||
raise Exception(f"missing harness: {target_exe}")
|
||||
|
||||
assembly_path = os.path.join(setup_dir, target_harness)
|
||||
if not os.path.exists(assembly_path):
|
||||
raise Exception(f"missing assembly: {target_harness}")
|
||||
|
||||
self._check_is_libfuzzer(target_exe)
|
||||
if target_options is None:
|
||||
target_options = []
|
||||
target_options = [
|
||||
"--target_path={setup_dir}/" + "{target_harness}"
|
||||
] + target_options
|
||||
|
||||
helper = JobHelper(
|
||||
self.onefuzz,
|
||||
self.logger,
|
||||
project,
|
||||
name,
|
||||
build,
|
||||
duration,
|
||||
pool_name=pool_name,
|
||||
target_exe=target_exe,
|
||||
)
|
||||
|
||||
helper.add_tags(tags)
|
||||
helper.define_containers(
|
||||
ContainerType.setup,
|
||||
ContainerType.inputs,
|
||||
ContainerType.crashes,
|
||||
)
|
||||
|
||||
if existing_inputs:
|
||||
helper.containers[ContainerType.inputs] = existing_inputs
|
||||
else:
|
||||
helper.define_containers(ContainerType.inputs)
|
||||
|
||||
if readonly_inputs:
|
||||
helper.containers[ContainerType.readonly_inputs] = readonly_inputs
|
||||
|
||||
fuzzer_containers = [
|
||||
(ContainerType.setup, helper.containers[ContainerType.setup]),
|
||||
(ContainerType.crashes, helper.containers[ContainerType.crashes]),
|
||||
(ContainerType.inputs, helper.containers[ContainerType.inputs]),
|
||||
]
|
||||
|
||||
helper.create_containers()
|
||||
helper.setup_notifications(notification_config)
|
||||
|
||||
helper.upload_setup(setup_dir, target_exe)
|
||||
if inputs:
|
||||
helper.upload_inputs(inputs)
|
||||
helper.wait_on(wait_for_files, wait_for_running)
|
||||
|
||||
# Build `target_options` for the `libfuzzer_fuzz` task.
|
||||
#
|
||||
# This allows passing arguments like `-runs` to the target only when
|
||||
# invoked in persistent fuzzing mode, and not test case repro mode.
|
||||
libfuzzer_fuzz_target_options = target_options.copy()
|
||||
|
||||
if fuzzing_target_options:
|
||||
libfuzzer_fuzz_target_options += fuzzing_target_options
|
||||
|
||||
self.onefuzz.tasks.create(
|
||||
helper.job.job_id,
|
||||
TaskType.libfuzzer_fuzz,
|
||||
harness,
|
||||
fuzzer_containers,
|
||||
pool_name=pool_name,
|
||||
reboot_after_setup=reboot_after_setup,
|
||||
duration=duration,
|
||||
vm_count=vm_count,
|
||||
target_options=libfuzzer_fuzz_target_options,
|
||||
target_env=target_env,
|
||||
target_workers=target_workers,
|
||||
tags=tags,
|
||||
debug=debug,
|
||||
ensemble_sync_delay=ensemble_sync_delay,
|
||||
check_fuzzer_help=check_fuzzer_help,
|
||||
expect_crash_on_failure=expect_crash_on_failure,
|
||||
)
|
||||
|
||||
self.logger.info("done creating tasks")
|
||||
helper.wait()
|
||||
return helper.job
|
||||
|
||||
def dotnet_dll(
|
||||
self,
|
||||
project: str,
|
||||
name: str,
|
||||
|
Reference in New Issue
Block a user