Skip to content

Commit 7691c8e

Browse files
Fix AttributeError: 'NoneType' object has no attribute 'corpus_pruning_task_input' (#4168)
This was caused by the roll forward of oss-fuzz.
1 parent 17a1bbc commit 7691c8e

File tree

7 files changed

+210
-204
lines changed

7 files changed

+210
-204
lines changed

src/clusterfuzz/_internal/bot/tasks/utasks/corpus_pruning_task.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666

6767
# Time to allow libFuzzer to timeout on its own.
6868
SINGLE_UNIT_TIMEOUT = 5
69-
TIMEOUT_FLAG = '-timeout=%d' % SINGLE_UNIT_TIMEOUT
69+
TIMEOUT_FLAG = f'-timeout={SINGLE_UNIT_TIMEOUT}'
7070

7171
# Corpus files limit for cases when corpus pruning task failed in the last
7272
# execution.
@@ -177,7 +177,7 @@ def __init__(self, uworker_input, fuzz_target, cross_pollinate_fuzzers):
177177
self.merge_tmp_dir = None
178178
self.engine = engine.get(self.fuzz_target.engine)
179179
if not self.engine:
180-
raise CorpusPruningError('Engine {} not found'.format(engine))
180+
raise CorpusPruningError(f'Engine {engine} not found')
181181

182182
self._created_directories = []
183183

@@ -593,15 +593,15 @@ def _record_cross_pollination_stats(output):
593593
client.insert([big_query.Insert(row=bigquery_row, insert_id=None)])
594594

595595

596-
def do_corpus_pruning(context, revision):
596+
def do_corpus_pruning(uworker_input, context, revision):
597597
"""Run corpus pruning."""
598598
# Set |FUZZ_TARGET| environment variable to help with unarchiving only fuzz
599599
# target and its related files.
600600
environment.set_value('FUZZ_TARGET', context.fuzz_target.binary)
601601

602602
if environment.is_trusted_host():
603603
from clusterfuzz._internal.bot.untrusted_runner import tasks_host
604-
return tasks_host.do_corpus_pruning(context, revision)
604+
return tasks_host.do_corpus_pruning(uworker_input, context, revision)
605605

606606
if not build_manager.setup_build(revision=revision):
607607
raise CorpusPruningError('Failed to setup build.')
@@ -1012,7 +1012,7 @@ def utask_main(uworker_input):
10121012

10131013
uworker_output = None
10141014
try:
1015-
result = do_corpus_pruning(context, revision)
1015+
result = do_corpus_pruning(uworker_input, context, revision)
10161016
issue_metadata = engine_common.get_fuzz_target_issue_metadata(fuzz_target)
10171017
issue_metadata = issue_metadata or {}
10181018
_upload_corpus_crashes_zip(

src/clusterfuzz/_internal/bot/untrusted_runner/tasks_host.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def _fuzz_target_to_proto(fuzz_target):
3939
)
4040

4141

42-
def do_corpus_pruning(context, revision):
42+
def do_corpus_pruning(uworker_input, context, revision):
4343
"""Do corpus pruning on untrusted worker."""
4444
cross_pollinate_fuzzers = [
4545
untrusted_runner_pb2.CrossPollinateFuzzer(
@@ -52,7 +52,8 @@ def do_corpus_pruning(context, revision):
5252
request = untrusted_runner_pb2.PruneCorpusRequest(
5353
fuzz_target=_fuzz_target_to_proto(context.fuzz_target),
5454
cross_pollinate_fuzzers=cross_pollinate_fuzzers,
55-
revision=revision)
55+
revision=revision,
56+
uworker_input=uworker_input)
5657

5758
response = host.stub().PruneCorpus(request)
5859

src/clusterfuzz/_internal/bot/untrusted_runner/tasks_impl.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,13 @@ def _proto_to_cross_pollinate_fuzzer(proto):
4444
def prune_corpus(request, _):
4545
"""Prune corpus."""
4646
context = corpus_pruning_task.Context(
47-
None, _proto_to_fuzz_target(request.fuzz_target), [
47+
request.uworker_input, _proto_to_fuzz_target(request.fuzz_target), [
4848
_proto_to_cross_pollinate_fuzzer(proto)
4949
for proto in request.cross_pollinate_fuzzers
5050
])
5151

52-
result = corpus_pruning_task.do_corpus_pruning(context, request.revision)
52+
result = corpus_pruning_task.do_corpus_pruning(request.uworker_input, context,
53+
request.revision)
5354

5455
cross_pollination_stats = None
5556
if result.cross_pollination_stats:

src/clusterfuzz/_internal/protos/untrusted_runner.proto

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
syntax = "proto2";
1616

1717
import "google/protobuf/any.proto";
18-
18+
import "clusterfuzz/_internal/protos/uworker_msg.proto";
1919
option go_package = "clusterfuzz/protos/untrusted_runner";
2020

2121
message GetStatusRequest {
@@ -214,6 +214,7 @@ message PruneCorpusRequest {
214214
repeated CrossPollinateFuzzer cross_pollinate_fuzzers = 2;
215215
optional bool last_execution_failed = 4;
216216
optional int64 revision = 5;
217+
optional uworker_msg.Input uworker_input = 6;
217218
}
218219

219220
message PruneCorpusResponse {

src/clusterfuzz/_internal/protos/untrusted_runner_pb2.py

Lines changed: 116 additions & 115 deletions
Large diffs are not rendered by default.

src/clusterfuzz/_internal/protos/uworker_msg.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
syntax = "proto3";
1616

17+
package uworker_msg;
18+
1719
import "google/protobuf/any.proto";
1820
import "google/protobuf/timestamp.proto";
1921

src/clusterfuzz/_internal/protos/uworker_msg_pb2.py

Lines changed: 79 additions & 79 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)