summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Goby <benoit@android.com>2013-01-15 12:36:47 -0800
committerBenoit Goby <benoit@android.com>2013-01-15 17:21:13 -0800
commit77e8e5851d3b951b5382663bd50f1f83cb531eb2 (patch)
treebf54c0b6288faa3c723031469d81d2c9958bfee7
parent345cb066d2e0c774c877a85d3035f298df1daf16 (diff)
downloadsystem_core-77e8e5851d3b951b5382663bd50f1f83cb531eb2.zip
system_core-77e8e5851d3b951b5382663bd50f1f83cb531eb2.tar.gz
system_core-77e8e5851d3b951b5382663bd50f1f83cb531eb2.tar.bz2
adb: Add "unauthorized" connection state
Add a new connection state, so that devices, that require confirmation to allow adb, appear as "unauthorized" in the adb devices lists. Change-Id: Ib4264bc5736dedecf05bcf8e31896f4d7a91fad8
-rw-r--r--adb/adb.c3
-rw-r--r--adb/adb.h1
-rw-r--r--adb/transport.c7
3 files changed, 11 insertions, 0 deletions
diff --git a/adb/adb.c b/adb/adb.c
index 8be5765..744e847 100644
--- a/adb/adb.c
+++ b/adb/adb.c
@@ -402,6 +402,8 @@ static char *connection_state_name(atransport *t)
return "device";
case CS_OFFLINE:
return "offline";
+ case CS_UNAUTHORIZED:
+ return "unauthorized";
default:
return "unknown";
}
@@ -531,6 +533,7 @@ void handle_packet(apacket *p, atransport *t)
case A_AUTH:
if (p->msg.arg0 == ADB_AUTH_TOKEN) {
+ t->connection_state = CS_UNAUTHORIZED;
t->key = adb_auth_nextkey(t->key);
if (t->key) {
send_auth_response(p->data, p->msg.data_length, t);
diff --git a/adb/adb.h b/adb/adb.h
index 9da8af8..a01d460 100644
--- a/adb/adb.h
+++ b/adb/adb.h
@@ -468,6 +468,7 @@ int connection_state(atransport *t);
#define CS_RECOVERY 4
#define CS_NOPERM 5 /* Insufficient permissions to communicate with the device */
#define CS_SIDELOAD 6
+#define CS_UNAUTHORIZED 7
extern int HOST;
extern int SHELL_EXIT_NOTIFY_FD;
diff --git a/adb/transport.c b/adb/transport.c
index 9fd6cc2..b4abb66 100644
--- a/adb/transport.c
+++ b/adb/transport.c
@@ -851,6 +851,12 @@ retry:
adb_mutex_unlock(&transport_lock);
if (result) {
+ if (result->connection_state == CS_UNAUTHORIZED) {
+ if (error_out)
+ *error_out = "device unauthorized. Please check the confirmation dialog on your device.";
+ result = NULL;
+ }
+
/* offline devices are ignored -- they are either being born or dying */
if (result && result->connection_state == CS_OFFLINE) {
if (error_out)
@@ -888,6 +894,7 @@ static const char *statename(atransport *t)
case CS_RECOVERY: return "recovery";
case CS_SIDELOAD: return "sideload";
case CS_NOPERM: return "no permissions";
+ case CS_UNAUTHORIZED: return "unauthorized";
default: return "unknown";
}
}