summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorSudheer Shanka <sudheersai@google.com>2019-05-20 16:54:59 -0700
committerSudheer Shanka <sudheersai@google.com>2019-05-21 10:21:43 -0700
commit1b817f65dbfac34119ef6346e1fc7a34be4900d7 (patch)
tree3d8a396170c42b8bee52409e693687c0f0dc657d /services
parentb92f0771dc495402d0fcefb76e5eb2e47e8431d2 (diff)
Don't use linked mediastore uris in DownloadProvider operations.
When MediaProvider db gets recreated, all the media content ids get renumbered. It's possible that when DownloadProvider is trying to delete an entry, it is holding onto a invalid mediastore uri. So, don't use linked mediastore uris in DownloadProvider operations. Also, revoke any prior uri grants of media content from DownloadStorageProvider. Bug: 132087334 Test: manual Test: atest DownloadProviderTests Test: atest cts/tests/app/src/android/app/cts/DownloadManagerTest.java Test: atest cts/tests/app/DownloadManagerLegacyTest/src/android/app/cts/DownloadManagerLegacyTest.java Test: atest cts/tests/app/DownloadManagerApi28Test/src/android/app/cts/DownloadManagerApi28Test.java Test: atest cts/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityTests.java Change-Id: I4885f5a0ae0b3ab660426605a8a43b8c1d66a4c7
Diffstat (limited to 'services')
-rw-r--r--services/art-profile2
-rw-r--r--services/core/java/com/android/server/uri/UriGrantsManagerService.java12
2 files changed, 8 insertions, 6 deletions
diff --git a/services/art-profile b/services/art-profile
index cf0f13cec21b..a9d5982d0d90 100644
--- a/services/art-profile
+++ b/services/art-profile
@@ -13532,7 +13532,7 @@ HSPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInte
HSPLcom/android/server/uri/UriGrantsManagerService;->checkUriPermission(Lcom/android/server/uri/GrantUri;II)Z
HSPLcom/android/server/uri/UriGrantsManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
HSPLcom/android/server/uri/UriGrantsManagerService;->findOrCreateUriPermission(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/uri/GrantUri;)Lcom/android/server/uri/UriPermission;
-PLcom/android/server/uri/UriGrantsManagerService;->getPersistedUriPermissions(Ljava/lang/String;Z)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/uri/UriGrantsManagerService;->getPersistedUriPermissions(Ljava/lang/String;ZZ)Landroid/content/pm/ParceledListSlice;
HSPLcom/android/server/uri/UriGrantsManagerService;->getProviderInfo(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
HSPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
HSPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/uri/UriPermissionOwner;I)V
diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
index 332df956d0fb..8b332d271a3a 100644
--- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java
+++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
@@ -211,9 +211,9 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub {
}
@Override
- public ParceledListSlice<android.content.UriPermission> getPersistedUriPermissions(
- String packageName, boolean incoming) {
- enforceNotIsolatedCaller("getPersistedUriPermissions");
+ public ParceledListSlice<android.content.UriPermission> getUriPermissions(
+ String packageName, boolean incoming, boolean persistedOnly) {
+ enforceNotIsolatedCaller("getUriPermissions");
Preconditions.checkNotNull(packageName, "packageName");
final int callingUid = Binder.getCallingUid();
@@ -240,7 +240,8 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub {
} else {
for (int j = 0; j < perms.size(); j++) {
final UriPermission perm = perms.valueAt(j);
- if (packageName.equals(perm.targetPkg) && perm.persistedModeFlags != 0) {
+ if (packageName.equals(perm.targetPkg)
+ && (!persistedOnly || perm.persistedModeFlags != 0)) {
result.add(perm.buildPersistedPublicApiObject());
}
}
@@ -252,7 +253,8 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub {
mGrantedUriPermissions.valueAt(i);
for (int j = 0; j < perms.size(); j++) {
final UriPermission perm = perms.valueAt(j);
- if (packageName.equals(perm.sourcePkg) && perm.persistedModeFlags != 0) {
+ if (packageName.equals(perm.sourcePkg)
+ && (!persistedOnly || perm.persistedModeFlags != 0)) {
result.add(perm.buildPersistedPublicApiObject());
}
}