diff options
| author | 2022-11-10 08:03:56 +0000 | |
|---|---|---|
| committer | 2022-11-10 08:03:56 +0000 | |
| commit | 600dfc97545d487371c68ba1fd7c8a4e64970268 (patch) | |
| tree | 70fea5d376a81e73773cf956030c69e27932caf2 | |
| parent | d30ccf00b1e2ef9b0c4fc2cf60786dc830672e12 (diff) | |
| parent | 98a754b3826b839f31b41daf87060d571dc19e00 (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.java | 16 |
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(); } |