From 9f292ce7f241133c6411a89b5a7d97e93dc4b85d Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Mon, 5 Mar 2018 17:46:25 -0800 Subject: [PATCH] PackageManager: Avoid null access In case cache creation fails, mCacheDir may be null. Avoid an access. Bug: 74087079 Test: m Test: boot under low-space condition Change-Id: I55836c820ef2c3431e8f06224d6f9edf0e9881ef --- .../java/com/android/server/pm/PackageManagerService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index d1abd63667762..a54cf1a39f976 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3375,6 +3375,13 @@ public class PackageManagerService extends IPackageManager.Stub // "/data/system/package_cache/1" File cacheDir = FileUtils.createDir(cacheBaseDir, PACKAGE_PARSER_CACHE_VERSION); + if (cacheDir == null) { + // Something went wrong. Attempt to delete everything and return. + Slog.wtf(TAG, "Cache directory cannot be created - wiping base dir " + cacheBaseDir); + FileUtils.deleteContentsAndDir(cacheBaseDir); + return null; + } + // The following is a workaround to aid development on non-numbered userdebug // builds or cases where "adb sync" is used on userdebug builds. If we detect that // the system partition is newer.