Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion source/common/upstream/upstream_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ class HostDescriptionImpl : virtual public HostDescription {
const envoy::api::v2::endpoint::Endpoint::HealthCheckConfig& health_check_config,
uint32_t priority)
: cluster_(cluster), hostname_(hostname), address_(dest_address),
health_check_address_(health_check_config.port_value() == 0
health_check_address_(health_check_config.port_value() == 0 ||
dest_address->type() != Network::Address::Type::Ip
? dest_address
: Network::Utility::getAddressWithPort(
*dest_address, health_check_config.port_value())),
Expand Down
13 changes: 13 additions & 0 deletions test/common/upstream/upstream_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -866,6 +866,19 @@ TEST(HostImplTest, HealthFlags) {
EXPECT_EQ(Host::Health::Unhealthy, host->health());
}

// Test that it's possible to do a HostDescriptionImpl with a unix
// domain socket host and a health check config with non-zero port.
// This is a regression test for oss-fuzz issue
// https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11095
TEST(HostImplTest, HealthPipeAddress) {
std::shared_ptr<MockClusterInfo> info{new NiceMock<MockClusterInfo>()};
envoy::api::v2::endpoint::Endpoint::HealthCheckConfig config;
config.set_port_value(8000);
HostDescriptionImpl descr(info, "", Network::Utility::resolveUrl("unix://foo"),
envoy::api::v2::core::Metadata::default_instance(),
envoy::api::v2::core::Locality().default_instance(), config, 1);
}

class StaticClusterImplTest : public testing::Test, public UpstreamImplTestBase {};

TEST_F(StaticClusterImplTest, InitialHosts) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
static_resources { clusters { name: " " connect_timeout { nanos: 4 } load_assignment { cluster_name: " " endpoints { lb_endpoints { endpoint { address { pipe { path: " " } } health_check_config { port_value: 2 } } } } } } }