diff --git a/src/inspector_socket.cc b/src/inspector_socket.cc index 79b50e6a452d7a..ab1cdf1fa5bdb6 100644 --- a/src/inspector_socket.cc +++ b/src/inspector_socket.cc @@ -164,6 +164,7 @@ static std::string TrimPort(const std::string& host) { static bool IsIPAddress(const std::string& host) { if (host.length() >= 4 && host.front() == '[' && host.back() == ']') return true; + if (host.front() == '0') return false; uint_fast16_t accum = 0; uint_fast8_t quads = 0; bool empty = true; diff --git a/test/cctest/test_inspector_socket.cc b/test/cctest/test_inspector_socket.cc index c740d961d9b773..6ae92c4b27e232 100644 --- a/test/cctest/test_inspector_socket.cc +++ b/test/cctest/test_inspector_socket.cc @@ -925,4 +925,12 @@ TEST_F(InspectorSocketTest, HostIpTooManyOctetsChecked) { expect_handshake_failure(); } +TEST_F(InspectorSocketTest, HostIPNonRoutable) { + const std::string INVALID_HOST_IP_REQUEST = "GET /json HTTP/1.1\r\n" + "Host: 0.0.0.0:9229\r\n\r\n"; + send_in_chunks(INVALID_HOST_IP_REQUEST.c_str(), + INVALID_HOST_IP_REQUEST.length()); + expect_handshake_failure(); +} + } // anonymous namespace