Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad127ef4 authored by Ivan Chiang's avatar Ivan Chiang
Browse files

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
parent c48b34af
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -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<String, Uri> 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<String, Uri> fullKey = Pair.create(packageName, key);

        synchronized (mCache) {