diff options
| author | 2019-06-26 15:47:44 -0700 | |
|---|---|---|
| committer | 2019-06-29 00:20:09 +0000 | |
| commit | 8c2fb0ea1ecc76cbb631a5664feb46e2a895846e (patch) | |
| tree | 0f1feb2a4854639eaf616a4abd4d8b180975a0e1 | |
| parent | f4535c8d5118edac968ac0bd3c25d1c71aebad67 (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.java | 6 |
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(); |