diff --git a/src/appengine/handlers/fuzzers.py b/src/appengine/handlers/fuzzers.py index e1f5e1e1466..af09eec9649 100644 --- a/src/appengine/handlers/fuzzers.py +++ b/src/appengine/handlers/fuzzers.py @@ -174,6 +174,7 @@ def apply_fuzzer_changes(self, fuzzer, upload_info): timeout = self._get_integer_value('timeout') max_testcases = self._get_integer_value('max_testcases') external_contribution = request.get('external_contribution', False) + untrusted = request.get('untrusted', False) differential = request.get('differential', False) environment_string = request.get('additional_environment_string') data_bundle_name = request.get('data_bundle_name') @@ -193,6 +194,7 @@ def apply_fuzzer_changes(self, fuzzer, upload_info): fuzzer.sample_testcase = None fuzzer.console_output = None fuzzer.external_contribution = bool(external_contribution) + fuzzer.untrusted = bool(untrusted) fuzzer.differential = bool(differential) fuzzer.additional_environment_string = environment_string fuzzer.timestamp = datetime.datetime.now(tz=datetime.timezone.utc).replace( @@ -208,6 +210,16 @@ def apply_fuzzer_changes(self, fuzzer, upload_info): if launcher_script: fuzzer.launcher_script = launcher_script + if fuzzer.untrusted: + for job_name in jobs: + job = data_types.Job.query(data_types.Job.name == job_name).get() + if not job: + raise helpers.EarlyExitError(f'Job {job_name} not found.', 400) + if job.platform.lower() != 'linux': + raise helpers.EarlyExitError( + f'Untrusted fuzzers can only be run on Linux jobs. ' + f'Job "{job_name}" has platform "{job.platform}".', 400) + fuzzer.put() fuzzer_selection.update_mappings_for_fuzzer(fuzzer) diff --git a/src/appengine/private/components/fuzzers-page/edit-form.html b/src/appengine/private/components/fuzzers-page/edit-form.html index fb1e41886e8..e1aa340fa49 100644 --- a/src/appengine/private/components/fuzzers-page/edit-form.html +++ b/src/appengine/private/components/fuzzers-page/edit-form.html @@ -220,11 +220,16 @@