From 9342e137c68e9d31e61b774f7a6583ed5f8353f9 Mon Sep 17 00:00:00 2001 From: Hongming Jin Date: Fri, 29 Jul 2016 14:29:54 -0700 Subject: [PATCH] Only return password for account session flow if the caller is signed with system key and have get_password permission. Bug: 30455516 Change-Id: I78484c59e4de1dff685ab91a0a8e7a756fffd9bf --- core/java/android/accounts/AccountManager.java | 4 ---- .../server/accounts/AccountManagerService.java | 12 ++++++------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 7465ed92e4692..d3551b73cf3f1 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -2676,8 +2676,6 @@ public class AccountManager { * @@ -2765,8 +2763,6 @@ public class AccountManager { * diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 39f054c81a8f7..cb6cb21798a47 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -2685,10 +2685,9 @@ public class AccountManagerService boolean isPasswordForwardingAllowed = isPermitted( callerPkg, uid, Manifest.permission.GET_PASSWORD); - int usrId = UserHandle.getCallingUserId(); long identityToken = clearCallingIdentity(); try { - UserAccounts accounts = getUserAccounts(usrId); + UserAccounts accounts = getUserAccounts(userId); logRecordWithUid(accounts, DebugDbHelper.ACTION_CALLED_START_ACCOUNT_ADD, TABLE_ACCOUNTS, uid); new StartAccountSession( @@ -2749,10 +2748,6 @@ public class AccountManagerService checkKeyIntent( Binder.getCallingUid(), intent); - // Omit passwords if the caller isn't permitted to see them. - if (!mIsPasswordForwardingAllowed) { - result.remove(AccountManager.KEY_PASSWORD); - } } IAccountManagerResponse response; if (mExpectActivityLaunch && result != null @@ -2782,6 +2777,11 @@ public class AccountManagerService return; } + // Omit passwords if the caller isn't permitted to see them. + if (!mIsPasswordForwardingAllowed) { + result.remove(AccountManager.KEY_PASSWORD); + } + // Strip auth token from result. result.remove(AccountManager.KEY_AUTHTOKEN);