summaryrefslogtreecommitdiffstats
path: root/core/java/android/content
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2014-11-05 15:46:09 -0800
committerAmith Yamasani <yamasani@google.com>2014-11-05 15:46:09 -0800
commit7d2d4fd55ecda623a717e90feb820c1812fb9d6e (patch)
tree2bd82905ec5de11da2ad791c5731f761f2f21422 /core/java/android/content
parentea651a4fbf274d229ead0185286c94b6e823d605 (diff)
downloadframeworks_base-7d2d4fd55ecda623a717e90feb820c1812fb9d6e.zip
frameworks_base-7d2d4fd55ecda623a717e90feb820c1812fb9d6e.tar.gz
frameworks_base-7d2d4fd55ecda623a717e90feb820c1812fb9d6e.tar.bz2
Fix singleUser provider grants
Fake the Uri for grant check, if we're checking access to a singleUser provider. Inject the userId in the authority so that the grant can be matched properly. Bug: 18194892 Change-Id: I4a55ce593ac21722f394e89e13350aa205d76336
Diffstat (limited to 'core/java/android/content')
-rw-r--r--core/java/android/content/ContentProvider.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index 2853c58..c8f9b7d 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -515,7 +515,10 @@ public abstract class ContentProvider implements ComponentCallbacks2 {
}
// last chance, check against any uri grants
- if (context.checkUriPermission(uri, pid, uid, Intent.FLAG_GRANT_READ_URI_PERMISSION)
+ final int callingUserId = UserHandle.getUserId(uid);
+ final Uri userUri = (mSingleUser && !UserHandle.isSameUser(mMyUid, uid))
+ ? maybeAddUserId(uri, callingUserId) : uri;
+ if (context.checkUriPermission(userUri, pid, uid, Intent.FLAG_GRANT_READ_URI_PERMISSION)
== PERMISSION_GRANTED) {
return;
}