From 1b58f5cbbb757bea043b863e52fc10e6e7dd7f90 Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 3 Feb 2016 11:12:23 +0000 Subject: [PATCH] Fix an off-by-one in SocketTest::DecodeHostAndPort 65535 is still a valid port. This should fix the android failures we were getting when we chose to connect over 65535 to the remote lldb-server. llvm-svn: 259638 --- lldb/source/Host/common/Socket.cpp | 2 +- lldb/unittests/Host/SocketTest.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lldb/source/Host/common/Socket.cpp b/lldb/source/Host/common/Socket.cpp index 91a5e37424e6..ea049ae6933e 100644 --- a/lldb/source/Host/common/Socket.cpp +++ b/lldb/source/Host/common/Socket.cpp @@ -268,7 +268,7 @@ Socket::DecodeHostAndPort(llvm::StringRef host_and_port, { bool ok = false; port = StringConvert::ToUInt32 (port_str.c_str(), UINT32_MAX, 10, &ok); - if (ok && port < UINT16_MAX) + if (ok && port <= UINT16_MAX) { if (error_ptr) error_ptr->Clear(); diff --git a/lldb/unittests/Host/SocketTest.cpp b/lldb/unittests/Host/SocketTest.cpp index ebb2f319a9c5..e3e522744760 100644 --- a/lldb/unittests/Host/SocketTest.cpp +++ b/lldb/unittests/Host/SocketTest.cpp @@ -116,7 +116,11 @@ TEST_F (SocketTest, DecodeHostAndPort) EXPECT_FALSE (Socket::DecodeHostAndPort ("google.com:-1138", host_str, port_str, port, &error)); EXPECT_TRUE (error.Fail ()); EXPECT_STREQ ("invalid host:port specification: 'google.com:-1138'", error.AsCString ()); - + + EXPECT_FALSE(Socket::DecodeHostAndPort("google.com:65536", host_str, port_str, port, &error)); + EXPECT_TRUE(error.Fail()); + EXPECT_STREQ("invalid host:port specification: 'google.com:65536'", error.AsCString()); + EXPECT_TRUE (Socket::DecodeHostAndPort ("12345", host_str, port_str, port, &error)); EXPECT_STREQ ("", host_str.c_str ()); EXPECT_STREQ ("12345", port_str.c_str ()); @@ -128,6 +132,12 @@ TEST_F (SocketTest, DecodeHostAndPort) EXPECT_STREQ ("0", port_str.c_str ()); EXPECT_EQ (0, port); EXPECT_TRUE (error.Success ()); + + EXPECT_TRUE(Socket::DecodeHostAndPort("*:65535", host_str, port_str, port, &error)); + EXPECT_STREQ("*", host_str.c_str()); + EXPECT_STREQ("65535", port_str.c_str()); + EXPECT_EQ(65535, port); + EXPECT_TRUE(error.Success()); } #ifndef LLDB_DISABLE_POSIX