summaryrefslogtreecommitdiff
path: root/fastboot/tcp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fastboot/tcp.cpp')
-rw-r--r--fastboot/tcp.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/fastboot/tcp.cpp b/fastboot/tcp.cpp
index da2880a5e..e42c4e1af 100644
--- a/fastboot/tcp.cpp
+++ b/fastboot/tcp.cpp
@@ -28,6 +28,7 @@
#include "tcp.h"
+#include <android-base/parseint.h>
#include <android-base/stringprintf.h>
namespace tcp {
@@ -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",
@@ -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;
}