From 714d59fafe5f5348229a0e0fe777c64a1c033348 Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Wed, 20 Apr 2022 18:00:56 +0000 Subject: [PATCH] [PackageUsage] fix NPE This is called by `mPm.getPackageUsage().maybeWriteAsync(mPm.mSettings.getPackagesLocked())` under `mPm.mLock` so it's unclear why any pkgSetting would be null. Perhaps there are other usages not shown in the stack trace. Adding null pointer checks to avoid crashes. BUG: 229823551 Test: builds Change-Id: Ia33bb59824e774b02249a1e9872bc6e418dec658 --- services/core/java/com/android/server/pm/PackageUsage.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/PackageUsage.java b/services/core/java/com/android/server/pm/PackageUsage.java index f0b200ce80d66..734e1eb2118f9 100644 --- a/services/core/java/com/android/server/pm/PackageUsage.java +++ b/services/core/java/com/android/server/pm/PackageUsage.java @@ -66,7 +66,8 @@ class PackageUsage extends AbstractStatsBase> { out.write(sb.toString().getBytes(StandardCharsets.US_ASCII)); for (PackageSetting pkgSetting : pkgSettings.values()) { - if (pkgSetting.getPkgState().getLatestPackageUseTimeInMills() == 0L) { + if (pkgSetting == null || pkgSetting.getPkgState() == null + || pkgSetting.getPkgState().getLatestPackageUseTimeInMills() == 0L) { continue; } sb.setLength(0);