Merge "adbd: check auth id." into rvc-dev am: d389d983bc am: 9634c0f40c am: 61deb8b67f
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/11988040 Change-Id: I7587190bb1efb46f304c43a6f832a9474ae73607
This commit is contained in:
commit
924637645e
3 changed files with 29 additions and 9 deletions
|
|
@ -42,7 +42,8 @@ static struct adisconnect adb_disconnect = {adb_disconnected, nullptr};
|
||||||
|
|
||||||
static void adb_disconnected(void* unused, atransport* t) {
|
static void adb_disconnected(void* unused, atransport* t) {
|
||||||
LOG(INFO) << "ADB wifi device disconnected";
|
LOG(INFO) << "ADB wifi device disconnected";
|
||||||
adbd_auth_tls_device_disconnected(auth_ctx, kAdbTransportTypeWifi, t->auth_id);
|
CHECK(t->auth_id.has_value());
|
||||||
|
adbd_auth_tls_device_disconnected(auth_ctx, kAdbTransportTypeWifi, t->auth_id.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(b/31559095): need bionic host so that we can use 'prop_info' returned
|
// TODO(b/31559095): need bionic host so that we can use 'prop_info' returned
|
||||||
|
|
|
||||||
|
|
@ -207,15 +207,27 @@ void adbd_cloexec_auth_socket() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void adbd_auth_key_authorized(void* arg, uint64_t id) {
|
static void adbd_auth_key_authorized(void* arg, uint64_t id) {
|
||||||
LOG(INFO) << "adb client authorized";
|
LOG(INFO) << "adb client " << id << " authorized";
|
||||||
fdevent_run_on_main_thread([=]() {
|
fdevent_run_on_main_thread([=]() {
|
||||||
LOG(INFO) << "arg = " << reinterpret_cast<uintptr_t>(arg);
|
|
||||||
auto* transport = transport_from_callback_arg(arg);
|
auto* transport = transport_from_callback_arg(arg);
|
||||||
if (!transport) {
|
if (!transport) {
|
||||||
LOG(ERROR) << "authorization received for deleted transport, ignoring";
|
LOG(ERROR) << "authorization received for deleted transport (" << id << "), ignoring";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
transport->auth_id = id;
|
|
||||||
|
if (transport->auth_id.has_value()) {
|
||||||
|
if (transport->auth_id.value() != id) {
|
||||||
|
LOG(ERROR)
|
||||||
|
<< "authorization received, but auth id doesn't match, ignoring (expected "
|
||||||
|
<< transport->auth_id.value() << ", got " << id << ")";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Older versions (i.e. dogfood/beta builds) of libadbd_auth didn't pass the initial
|
||||||
|
// auth id to us, so we'll just have to trust it until R ships and we can retcon this.
|
||||||
|
transport->auth_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
adbd_auth_verified(transport);
|
adbd_auth_verified(transport);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -265,14 +277,20 @@ void adbd_auth_verified(atransport* t) {
|
||||||
|
|
||||||
static void adb_disconnected(void* unused, atransport* t) {
|
static void adb_disconnected(void* unused, atransport* t) {
|
||||||
LOG(INFO) << "ADB disconnect";
|
LOG(INFO) << "ADB disconnect";
|
||||||
adbd_auth_notify_disconnect(auth_ctx, t->auth_id);
|
CHECK(t->auth_id.has_value());
|
||||||
|
adbd_auth_notify_disconnect(auth_ctx, t->auth_id.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
void adbd_auth_confirm_key(atransport* t) {
|
void adbd_auth_confirm_key(atransport* t) {
|
||||||
LOG(INFO) << "prompting user to authorize key";
|
LOG(INFO) << "prompting user to authorize key";
|
||||||
t->AddDisconnect(&adb_disconnect);
|
t->AddDisconnect(&adb_disconnect);
|
||||||
adbd_auth_prompt_user(auth_ctx, t->auth_key.data(), t->auth_key.size(),
|
if (adbd_auth_prompt_user_with_id) {
|
||||||
transport_to_callback_arg(t));
|
t->auth_id = adbd_auth_prompt_user_with_id(auth_ctx, t->auth_key.data(), t->auth_key.size(),
|
||||||
|
transport_to_callback_arg(t));
|
||||||
|
} else {
|
||||||
|
adbd_auth_prompt_user(auth_ctx, t->auth_key.data(), t->auth_key.size(),
|
||||||
|
transport_to_callback_arg(t));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void adbd_notify_framework_connected_key(atransport* t) {
|
void adbd_notify_framework_connected_key(atransport* t) {
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <optional>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
@ -320,7 +321,7 @@ class atransport : public enable_weak_from_this<atransport> {
|
||||||
#if !ADB_HOST
|
#if !ADB_HOST
|
||||||
// Used to provide the key to the framework.
|
// Used to provide the key to the framework.
|
||||||
std::string auth_key;
|
std::string auth_key;
|
||||||
uint64_t auth_id;
|
std::optional<uint64_t> auth_id;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool IsTcpDevice() const { return type == kTransportLocal; }
|
bool IsTcpDevice() const { return type == kTransportLocal; }
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue