Merge "Re-seal the sessions on reboot."

This commit is contained in:
TreeHugger Robot
2020-01-17 01:46:57 +00:00
committed by Android (Google) Code Review
2 changed files with 6 additions and 10 deletions

View File

@@ -400,10 +400,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
} finally {
IoUtils.closeQuietly(fis);
}
// After all of the sessions were loaded, they are ready to be sealed and validated
// Re-sealing the sealed sessions.
for (int i = 0; i < mSessions.size(); ++i) {
PackageInstallerSession session = mSessions.valueAt(i);
session.sealAndValidateIfNecessary();
session.sealIfNecessary();
}
}

View File

@@ -1374,15 +1374,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
/**
* If session should be sealed, then it's sealed to prevent further modification
* and then it's validated.
*
* If the session was sealed but something went wrong then it's destroyed.
* If session should be sealed, then it's sealed to prevent further modification.
* If the session can't be sealed then it's destroyed.
*
* <p> This is meant to be called after all of the sessions are loaded and added to
* PackageInstallerService
*/
void sealAndValidateIfNecessary() {
void sealIfNecessary() {
synchronized (mLock) {
if (!mShouldBeSealed || isStagedAndInTerminalState()) {
return;
@@ -1391,9 +1389,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
List<PackageInstallerSession> childSessions = getChildSessions();
synchronized (mLock) {
try {
sealAndValidateLocked(childSessions);
} catch (StreamingException e) {
Slog.e(TAG, "Streaming failed", e);
sealLocked(childSessions);
} catch (PackageManagerException e) {
Slog.e(TAG, "Package not valid", e);
}