summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chun-Wei Wang <wangchun@google.com> 2022-11-10 08:03:56 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-11-10 08:03:56 +0000
commit600dfc97545d487371c68ba1fd7c8a4e64970268 (patch)
tree70fea5d376a81e73773cf956030c69e27932caf2
parentd30ccf00b1e2ef9b0c4fc2cf60786dc830672e12 (diff)
parent98a754b3826b839f31b41daf87060d571dc19e00 (diff)
Merge "Prevent committing session while in progress" into tm-qpr-dev am: 98a754b382
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20394007 Change-Id: I34438e2eb3e4f2407aac46afb24f3ca05c1e2726 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerSession.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 37bfbb11948a..06458d1bf50c 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -366,6 +366,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
@GuardedBy("mLock")
private boolean mStageDirInUse = false;
+ /**
+ * True if the installation is already in progress. This is used to prevent the caller
+ * from {@link #commit(IntentSender, boolean) committing} the session again while the
+ * installation is still in progress.
+ */
+ @GuardedBy("mLock")
+ private boolean mInstallationInProgress = false;
+
/** Permissions have been accepted by the user (see {@link #setPermissionsResult}) */
@GuardedBy("mLock")
private boolean mPermissionsManuallyAccepted = false;
@@ -1661,6 +1669,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
}
+ synchronized (mLock) {
+ if (mInstallationInProgress) {
+ throw new IllegalStateException("Installation is already in progress. Don't "
+ + "commit session=" + sessionId + " again.");
+ }
+ mInstallationInProgress = true;
+ }
+
dispatchSessionSealed();
}