From 16c5a133ab2b80af2b56f86e42de04a4399c60fc Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Mon, 15 May 2017 18:26:38 -0700 Subject: [PATCH 1/2] adb: redirect stdout/stderr before initializing usb. Avoid printing USB logging to the console. Test: None Change-Id: Ib8ad0ad6c559689d0f8feec2e66b42380edd26fb --- adb/client/main.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/adb/client/main.cpp b/adb/client/main.cpp index bd9ad01f3..62798cde7 100644 --- a/adb/client/main.cpp +++ b/adb/client/main.cpp @@ -125,6 +125,11 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply }); #endif + if (is_daemon) { + close_stdin(); + setup_daemon_logging(); + } + android::base::at_quick_exit(adb_server_cleanup); init_transport_registration(); @@ -148,11 +153,6 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply std::this_thread::sleep_for(100ms); } - if (is_daemon) { - close_stdin(); - setup_daemon_logging(); - } - adb_auth_init(); if (is_daemon) { From 36dadca9f0f0c007efb1d8b9d0c9d32cb9abe637 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Tue, 16 May 2017 15:02:45 -0700 Subject: [PATCH 2/2] adb: boolify check_header and check_data. Test: grep Change-Id: I8d0c60e500bba855a1afc0877253262246c07fef --- adb/transport.cpp | 15 ++++++--------- adb/transport.h | 4 ++-- adb/transport_local.cpp | 8 ++++---- adb/transport_usb.cpp | 10 +++++----- 4 files changed, 17 insertions(+), 20 deletions(-) diff --git a/adb/transport.cpp b/adb/transport.cpp index 13cfaa1d4..24e90cf75 100644 --- a/adb/transport.cpp +++ b/adb/transport.cpp @@ -1050,27 +1050,24 @@ void unregister_usb_transport(usb_handle* usb) { [usb](atransport* t) { return t->usb == usb && t->GetConnectionState() == kCsNoPerm; }); } -int check_header(apacket* p, atransport* t) { +bool check_header(apacket* p, atransport* t) { if (p->msg.magic != (p->msg.command ^ 0xffffffff)) { VLOG(RWX) << "check_header(): invalid magic command = " << std::hex << p->msg.command << ", magic = " << p->msg.magic; - return -1; + return false; } if (p->msg.data_length > t->get_max_payload()) { VLOG(RWX) << "check_header(): " << p->msg.data_length << " atransport::max_payload = " << t->get_max_payload(); - return -1; + return false; } - return 0; + return true; } -int check_data(apacket* p) { - if (calculate_apacket_checksum(p) != p->msg.data_check) { - return -1; - } - return 0; +bool check_data(apacket* p) { + return calculate_apacket_checksum(p) == p->msg.data_check; } #if ADB_HOST diff --git a/adb/transport.h b/adb/transport.h index 006aaf411..730440427 100644 --- a/adb/transport.h +++ b/adb/transport.h @@ -221,8 +221,8 @@ int register_socket_transport(int s, const char* serial, int port, int local); // This should only be used for transports with connection_state == kCsNoPerm. void unregister_usb_transport(usb_handle* usb); -int check_header(apacket* p, atransport* t); -int check_data(apacket* p); +bool check_header(apacket* p, atransport* t); +bool check_data(apacket* p); void close_usb_devices(); void close_usb_devices(std::function predicate); diff --git a/adb/transport_local.cpp b/adb/transport_local.cpp index 3ee286a12..a9e583faf 100644 --- a/adb/transport_local.cpp +++ b/adb/transport_local.cpp @@ -62,22 +62,22 @@ static atransport* local_transports[ ADB_LOCAL_TRANSPORT_MAX ]; static int remote_read(apacket *p, atransport *t) { - if(!ReadFdExactly(t->sfd, &p->msg, sizeof(amessage))){ + if (!ReadFdExactly(t->sfd, &p->msg, sizeof(amessage))) { D("remote local: read terminated (message)"); return -1; } - if(check_header(p, t)) { + if (!check_header(p, t)) { D("bad header: terminated (data)"); return -1; } - if(!ReadFdExactly(t->sfd, p->data, p->msg.data_length)){ + if (!ReadFdExactly(t->sfd, p->data, p->msg.data_length)) { D("remote local: terminated (data)"); return -1; } - if(check_data(p)) { + if (!check_data(p)) { D("bad data: terminated (data)"); return -1; } diff --git a/adb/transport_usb.cpp b/adb/transport_usb.cpp index 885d7230e..47094b82e 100644 --- a/adb/transport_usb.cpp +++ b/adb/transport_usb.cpp @@ -72,7 +72,7 @@ static int remote_read(apacket* p, atransport* t) { D("remote usb: read terminated (message)"); return -1; } - if (static_cast(n) != sizeof(p->msg) || check_header(p, t)) { + if (static_cast(n) != sizeof(p->msg) || !check_header(p, t)) { D("remote usb: check_header failed, skip it"); goto err_msg; } @@ -95,7 +95,7 @@ static int remote_read(apacket* p, atransport* t) { goto err_msg; } } - if (check_data(p)) { + if (!check_data(p)) { D("remote usb: check_data failed, skip it"); goto err_msg; } @@ -124,19 +124,19 @@ static int remote_read(apacket *p, atransport *t) return -1; } - if(check_header(p, t)) { + if (!check_header(p, t)) { D("remote usb: check_header failed"); return -1; } - if(p->msg.data_length) { + if (p->msg.data_length) { if (usb_read(t->usb, p->data, p->msg.data_length)) { D("remote usb: terminated (data)"); return -1; } } - if(check_data(p)) { + if (!check_data(p)) { D("remote usb: check_data failed"); return -1; }