diff --git a/test/extensions/filters/http/ext_proc/unit_test_fuzz/ext_proc_corpus/crash-df781e3c1eede590dddbb6d3fd7e58f87b8d89cd b/test/extensions/filters/http/ext_proc/unit_test_fuzz/ext_proc_corpus/crash-df781e3c1eede590dddbb6d3fd7e58f87b8d89cd new file mode 100644 index 000000000000..8d60ca08e841 --- /dev/null +++ b/test/extensions/filters/http/ext_proc/unit_test_fuzz/ext_proc_corpus/crash-df781e3c1eede590dddbb6d3fd7e58f87b8d89cd @@ -0,0 +1,28 @@ +config { + grpc_service { + envoy_grpc { + cluster_name: ":" + } + } + processing_mode { + response_header_mode: SKIP + request_trailer_mode: SKIP + response_trailer_mode: SKIP + } + max_message_timeout { + nanos: 89 + } +} +request { + http_body { + data: "\177\177\177\177" + } +} +response { + request_headers { + } + mode_override { + request_header_mode: SKIP + request_body_mode: BUFFERED + } +} diff --git a/test/extensions/filters/http/ext_proc/unit_test_fuzz/ext_proc_unit_test_fuzz.cc b/test/extensions/filters/http/ext_proc/unit_test_fuzz/ext_proc_unit_test_fuzz.cc index 477a04bb2841..8ca81765cb27 100644 --- a/test/extensions/filters/http/ext_proc/unit_test_fuzz/ext_proc_unit_test_fuzz.cc +++ b/test/extensions/filters/http/ext_proc/unit_test_fuzz/ext_proc_unit_test_fuzz.cc @@ -18,13 +18,18 @@ namespace UnitTestFuzz { class FuzzerMocks { public: - FuzzerMocks() : addr_(std::make_shared("/test/test.sock")) { + FuzzerMocks() + : addr_(std::make_shared("/test/test.sock")), buffer_("foo") { ON_CALL(decoder_callbacks_, connection()) .WillByDefault(Return(OptRef{connection_})); connection_.stream_info_.downstream_connection_info_provider_->setRemoteAddress(addr_); connection_.stream_info_.downstream_connection_info_provider_->setLocalAddress(addr_); ON_CALL(decoder_callbacks_, addDecodedTrailers()).WillByDefault(ReturnRef(request_trailers_)); ON_CALL(encoder_callbacks_, addEncodedTrailers()).WillByDefault(ReturnRef(response_trailers_)); + ON_CALL(decoder_callbacks_, decodingBuffer()).WillByDefault(Return(&buffer_)); + ON_CALL(encoder_callbacks_, encodingBuffer()).WillByDefault(Return(&buffer_)); + ON_CALL(decoder_callbacks_, decoderBufferLimit()).WillByDefault(Return(1024)); + ON_CALL(encoder_callbacks_, encoderBufferLimit()).WillByDefault(Return(1024)); } NiceMock decoder_callbacks_; @@ -33,6 +38,7 @@ class FuzzerMocks { NiceMock connection_; NiceMock request_trailers_; NiceMock response_trailers_; + NiceMock buffer_; testing::NiceMock async_client_stream_info_; }; @@ -72,8 +78,8 @@ DEFINE_PROTO_FUZZER( filter->setDecoderFilterCallbacks(mocks.decoder_callbacks_); filter->setEncoderFilterCallbacks(mocks.encoder_callbacks_); - ON_CALL(*client, start(_, _, _)) - .WillByDefault(Invoke( + EXPECT_CALL(*client, start(_, _, _)) + .WillRepeatedly(Invoke( [&](ExternalProcessing::ExternalProcessorCallbacks&, const envoy::config::core::v3::GrpcService&, const StreamInfo::StreamInfo&) -> ExternalProcessing::ExternalProcessorStreamPtr { @@ -88,7 +94,7 @@ DEFINE_PROTO_FUZZER( })); EXPECT_CALL(*stream, streamInfo()) .WillRepeatedly(ReturnRef(mocks.async_client_stream_info_)); - ON_CALL(*stream, close()).WillByDefault(Return(false)); + EXPECT_CALL(*stream, close()).WillRepeatedly(Return(false)); return stream; }));