summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlos Valdivia <carlosvaldivia@google.com>2013-10-14 19:02:15 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-10-14 19:02:15 -0700
commit8d983713db4583d8062dc499efc3896aaf36d65e (patch)
tree089d549fdf70090d689fe553ead76d47a49db91a
parent209dc77a6a6bd07f380bb2ee70169fef09ad7fa4 (diff)
parent5505706cfabd62edbbc5e326f129bc5a16ca9b55 (diff)
downloadframeworks_base-8d983713db4583d8062dc499efc3896aaf36d65e.zip
frameworks_base-8d983713db4583d8062dc499efc3896aaf36d65e.tar.gz
frameworks_base-8d983713db4583d8062dc499efc3896aaf36d65e.tar.bz2
am 5505706c: am cdb9ea79: Merge "Package checks for resloving recovery tokens should be user sensitive." into klp-dev
* commit '5505706cfabd62edbbc5e326f129bc5a16ca9b55': Package checks for resloving recovery tokens should be user sensitive.
-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