summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlos Valdivia <carlosvaldivia@google.com>2013-10-15 01:45:45 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-10-15 01:45:45 +0000
commitcdb9ea79a57c847c3ce589cefe3dcdf1ab046db0 (patch)
tree2bba2dc56c4d9780dc531af94a97d6861ec77c26
parentcf8a6ca9aa31b4e8930b0f6e6cbc3108fda4a9bf (diff)
parent416747aea11351c4327ac74c3a8d7bf338cde946 (diff)
downloadframeworks_base-cdb9ea79a57c847c3ce589cefe3dcdf1ab046db0.zip
frameworks_base-cdb9ea79a57c847c3ce589cefe3dcdf1ab046db0.tar.gz
frameworks_base-cdb9ea79a57c847c3ce589cefe3dcdf1ab046db0.tar.bz2
Merge "Package checks for resloving recovery tokens should be user sensitive." into klp-dev
-rw-r--r--services/java/com/android/server/accounts/AccountManagerService.java21
1 files changed, 13 insertions, 8 deletions
diff --git a/services/java/com/android/server/accounts/AccountManagerService.java b/services/java/com/android/server/accounts/AccountManagerService.java
index cc43a9c..f972f70 100644
--- a/services/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/java/com/android/server/accounts/AccountManagerService.java
@@ -2167,15 +2167,20 @@ public class AccountManagerService
* this can be very bad when those apps are in the system like
* the System Settings.
*/
- PackageManager pm = mContext.getPackageManager();
- ResolveInfo resolveInfo = pm.resolveActivity(intent, 0);
- int targetUid = resolveInfo.activityInfo.applicationInfo.uid;
int authenticatorUid = Binder.getCallingUid();
- if (PackageManager.SIGNATURE_MATCH !=
- pm.checkSignatures(authenticatorUid, targetUid)) {
- throw new SecurityException(
- "Activity to be started with KEY_INTENT must " +
- "share Authenticator's signatures");
+ long bid = Binder.clearCallingIdentity();
+ try {
+ PackageManager pm = mContext.getPackageManager();
+ ResolveInfo resolveInfo = pm.resolveActivityAsUser(intent, 0, mAccounts.userId);
+ int targetUid = resolveInfo.activityInfo.applicationInfo.uid;
+ if (PackageManager.SIGNATURE_MATCH !=
+ pm.checkSignatures(authenticatorUid, targetUid)) {
+ throw new SecurityException(
+ "Activity to be started with KEY_INTENT must " +
+ "share Authenticator's signatures");
+ }
+ } finally {
+ Binder.restoreCallingIdentity(bid);
}
}
if (result != null