summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eugene Susla <eugenesusla@google.com> 2019-06-26 15:47:44 -0700
committer Eugene Susla <eugenesusla@google.com> 2019-06-29 00:20:09 +0000
commit8c2fb0ea1ecc76cbb631a5664feb46e2a895846e (patch)
tree0f1feb2a4854639eaf616a4abd4d8b180975a0e1
parentf4535c8d5118edac968ac0bd3c25d1c71aebad67 (diff)
[DO NOT MERGE] Guard against launching permission backup/restore twice per request
It looks like there is some case where AbstractRemoteService would #run the same PendingRequest the second time which violates AsyncTask assumption. Fixes: 135986503 Test: atest android.permission.cts.PermissionControllerTest Change-Id: I2d072714ee0fad3c365ff7eb191d690056c0931a
-rw-r--r--core/java/android/permission/PermissionControllerManager.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java
index 3ab5c5156c14..5b2e3a209006 100644
--- a/core/java/android/permission/PermissionControllerManager.java
+++ b/core/java/android/permission/PermissionControllerManager.java
@@ -808,6 +808,9 @@ public final class PermissionControllerManager {
@Override
public void run() {
+ if (mBackupReader.getStatus() != AsyncTask.Status.PENDING) {
+ return;
+ }
mBackupReader.execute();
ParcelFileDescriptor remotePipe = mBackupReader.getRemotePipe();
@@ -919,6 +922,9 @@ public final class PermissionControllerManager {
@Override
public void run(@NonNull IPermissionController service) {
+ if (mBackupSender.getStatus() != AsyncTask.Status.PENDING) {
+ return;
+ }
mBackupSender.execute(mBackup);
ParcelFileDescriptor remotePipe = mBackupSender.getRemotePipe();