From 54d42be6eb149b3e43115e810e4a1b92e9865d05 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 20 Jul 2015 16:36:55 -0700 Subject: [PATCH] Avoid NPE when no staged installs. listFiles() returns null instead of empty list; deal with it. Bug: 22608671 Change-Id: I60dabec31932af3cded915c6927a4c5e5c71775d --- .../server/pm/PackageInstallerService.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 07de6f546ee4c..0366fff4eee9c 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -91,7 +91,6 @@ import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.ImageUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.IoThread; -import com.google.android.collect.Sets; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -106,6 +105,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Random; @@ -221,7 +221,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { reconcileStagesLocked(StorageManager.UUID_PRIVATE_INTERNAL); - final ArraySet unclaimedIcons = Sets.newArraySet( + final ArraySet unclaimedIcons = newArraySet( mSessionsDir.listFiles()); // Ignore stages and icons claimed by active sessions @@ -245,7 +245,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { private void reconcileStagesLocked(String volumeUuid) { final File stagingDir = buildStagingDir(volumeUuid); - final ArraySet unclaimedStages = Sets.newArraySet( + final ArraySet unclaimedStages = newArraySet( stagingDir.listFiles(sStageFilter)); // Ignore stages claimed by active sessions @@ -1091,6 +1091,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub { .build(); } + public static ArraySet newArraySet(E... elements) { + final ArraySet set = new ArraySet(); + if (elements != null) { + set.ensureCapacity(elements.length); + Collections.addAll(set, elements); + } + return set; + } + private static class Callbacks extends Handler { private static final int MSG_SESSION_CREATED = 1; private static final int MSG_SESSION_BADGING_CHANGED = 2;