From b1d2b9dc94b195c73755db8892ad2eb3f7614868 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Tue, 28 Jul 2020 12:53:29 +0800 Subject: [PATCH] Fix #removeChildSessionId (4/n) Removing a non-owning child should be no-op. The current implementation will set the parent id to -1 incorrectly. Bug: 162286562 Test: Will be added in next CLs Change-Id: I483c570079511d5f10dcfdc93e7daf006004b226 --- .../com/android/server/pm/PackageInstallerSession.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index c56f744722565..db8ecf764a3fe 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -3143,14 +3143,15 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { synchronized (mLock) { assertCallerIsOwnerOrRootLocked(); assertPreparedAndNotSealedLocked("removeChildSessionId"); + final int indexOfSession = mChildSessionIds.indexOfKey(sessionId); - if (session != null) { - session.setParentSessionId(SessionInfo.INVALID_ID); - } if (indexOfSession < 0) { // not added in the first place; no-op return; } + if (session != null) { + session.setParentSessionId(SessionInfo.INVALID_ID); + } mChildSessionIds.removeAt(indexOfSession); } } finally {