From ad127ef47cf477e9107cadddc40837a60397dba6 Mon Sep 17 00:00:00 2001 From: Ivan Chiang Date: Mon, 12 Aug 2019 14:46:22 +0800 Subject: [PATCH] Avoid crossing the user streams Use PM.resolveContentProviderAsUser to instead of PM.resolveContentProvider to avoid crossing the user streams. Test: manual Change-Id: Ie9e9917a908bf8a43e1065d8d58b3a6ef6c970dc Fix: 139065612 --- .../com/android/server/content/ContentService.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java index 3e1817bd14ff0..36e872a109dd4 100644 --- a/services/core/java/com/android/server/content/ContentService.java +++ b/services/core/java/com/android/server/content/ContentService.java @@ -461,7 +461,7 @@ public final class ContentService extends IContentService.Stub { } synchronized (mCache) { - final String providerPackageName = getProviderPackageName(uri); + final String providerPackageName = getProviderPackageName(uri, userHandle); invalidateCacheLocked(userHandle, providerPackageName, uri); } } finally { @@ -1145,9 +1145,9 @@ public final class ContentService extends IContentService.Stub { } } - private @Nullable String getProviderPackageName(Uri uri) { - final ProviderInfo pi = mContext.getPackageManager() - .resolveContentProvider(uri.getAuthority(), 0); + private @Nullable String getProviderPackageName(Uri uri, int userId) { + final ProviderInfo pi = mContext.getPackageManager().resolveContentProviderAsUser( + uri.getAuthority(), 0, userId); return (pi != null) ? pi.packageName : null; } @@ -1200,7 +1200,7 @@ public final class ContentService extends IContentService.Stub { mContext.getSystemService(AppOpsManager.class).checkPackage(Binder.getCallingUid(), packageName); - final String providerPackageName = getProviderPackageName(key); + final String providerPackageName = getProviderPackageName(key, userId); final Pair fullKey = Pair.create(packageName, key); synchronized (mCache) { @@ -1222,7 +1222,7 @@ public final class ContentService extends IContentService.Stub { mContext.getSystemService(AppOpsManager.class).checkPackage(Binder.getCallingUid(), packageName); - final String providerPackageName = getProviderPackageName(key); + final String providerPackageName = getProviderPackageName(key, userId); final Pair fullKey = Pair.create(packageName, key); synchronized (mCache) {