Loading fastboot/tcp.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include "tcp.h" #include <android-base/parseint.h> #include <android-base/stringprintf.h> namespace tcp { Loading Loading @@ -98,7 +99,8 @@ bool TcpTransport::InitializeProtocol(std::string* error) { return false; } char buffer[kHandshakeLength]; char buffer[kHandshakeLength + 1]; buffer[kHandshakeLength] = '\0'; if (socket_->ReceiveAll(buffer, kHandshakeLength, kHandshakeTimeoutMs) != kHandshakeLength) { *error = android::base::StringPrintf( "No initialization message received (%s). Target may not support TCP fastboot", Loading @@ -111,9 +113,10 @@ bool TcpTransport::InitializeProtocol(std::string* error) { return false; } if (memcmp(buffer + 2, "01", 2) != 0) { int version = 0; if (!android::base::ParseInt(buffer + 2, &version) || version < kProtocolVersion) { *error = android::base::StringPrintf("Unknown TCP protocol version %s (host version %02d)", std::string(buffer + 2, 2).c_str(), kProtocolVersion); buffer + 2, kProtocolVersion); return false; } Loading fastboot/tcp_test.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,16 @@ TEST(TcpConnectTest, TestSuccess) { EXPECT_EQ("", error); } TEST(TcpConnectTest, TestNewerVersionSuccess) { std::unique_ptr<SocketMock> mock(new SocketMock); mock->ExpectSend("FB01"); mock->AddReceive("FB99"); std::string error; EXPECT_NE(nullptr, tcp::internal::Connect(std::move(mock), &error)); EXPECT_EQ("", error); } TEST(TcpConnectTest, TestSendFailure) { std::unique_ptr<SocketMock> mock(new SocketMock); mock->ExpectSendFailure("FB01"); Loading Loading @@ -74,11 +84,11 @@ TEST(TcpConnectTest, TestBadResponseFailure) { TEST(TcpConnectTest, TestUnknownVersionFailure) { std::unique_ptr<SocketMock> mock(new SocketMock); mock->ExpectSend("FB01"); mock->AddReceive("FB02"); mock->AddReceive("FB00"); std::string error; EXPECT_EQ(nullptr, tcp::internal::Connect(std::move(mock), &error)); EXPECT_EQ("Unknown TCP protocol version 02 (host version 01)", error); EXPECT_EQ("Unknown TCP protocol version 00 (host version 01)", error); } // Fixture to configure a SocketMock for a successful TCP connection. Loading Loading
fastboot/tcp.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include "tcp.h" #include <android-base/parseint.h> #include <android-base/stringprintf.h> namespace tcp { Loading Loading @@ -98,7 +99,8 @@ bool TcpTransport::InitializeProtocol(std::string* error) { return false; } char buffer[kHandshakeLength]; char buffer[kHandshakeLength + 1]; buffer[kHandshakeLength] = '\0'; if (socket_->ReceiveAll(buffer, kHandshakeLength, kHandshakeTimeoutMs) != kHandshakeLength) { *error = android::base::StringPrintf( "No initialization message received (%s). Target may not support TCP fastboot", Loading @@ -111,9 +113,10 @@ bool TcpTransport::InitializeProtocol(std::string* error) { return false; } if (memcmp(buffer + 2, "01", 2) != 0) { int version = 0; if (!android::base::ParseInt(buffer + 2, &version) || version < kProtocolVersion) { *error = android::base::StringPrintf("Unknown TCP protocol version %s (host version %02d)", std::string(buffer + 2, 2).c_str(), kProtocolVersion); buffer + 2, kProtocolVersion); return false; } Loading
fastboot/tcp_test.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,16 @@ TEST(TcpConnectTest, TestSuccess) { EXPECT_EQ("", error); } TEST(TcpConnectTest, TestNewerVersionSuccess) { std::unique_ptr<SocketMock> mock(new SocketMock); mock->ExpectSend("FB01"); mock->AddReceive("FB99"); std::string error; EXPECT_NE(nullptr, tcp::internal::Connect(std::move(mock), &error)); EXPECT_EQ("", error); } TEST(TcpConnectTest, TestSendFailure) { std::unique_ptr<SocketMock> mock(new SocketMock); mock->ExpectSendFailure("FB01"); Loading Loading @@ -74,11 +84,11 @@ TEST(TcpConnectTest, TestBadResponseFailure) { TEST(TcpConnectTest, TestUnknownVersionFailure) { std::unique_ptr<SocketMock> mock(new SocketMock); mock->ExpectSend("FB01"); mock->AddReceive("FB02"); mock->AddReceive("FB00"); std::string error; EXPECT_EQ(nullptr, tcp::internal::Connect(std::move(mock), &error)); EXPECT_EQ("Unknown TCP protocol version 02 (host version 01)", error); EXPECT_EQ("Unknown TCP protocol version 00 (host version 01)", error); } // Fixture to configure a SocketMock for a successful TCP connection. Loading