diff options
| author | 2018-11-16 04:46:27 -0800 | |
|---|---|---|
| committer | 2018-11-16 04:46:27 -0800 | |
| commit | 0407b12c00d749a6877bd7c809a9e080b190c8c9 (patch) | |
| tree | d7216cb77f1afb88d59671b646f7231ea24c603e | |
| parent | a835f23f470a3d3539892e6d08286aa1de170f94 (diff) | |
| parent | 801862313f1629d04074aff6c5ba56bf2d52bdc7 (diff) | |
Merge "Check for null in applyDefiningSharedLibraryUpdateLocked."
am: 801862313f
Change-Id: I5beab35e1d6fda02895e9479015f4ea2276be5c1
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index bdb2f4cbefd8..2a605f555bdf 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -9483,7 +9483,7 @@ public class PackageManagerService extends IPackageManager.Stub } } - private SharedLibraryInfo getSharedLibraryInfoLPr(String name, long version) { + private @Nullable SharedLibraryInfo getSharedLibraryInfoLPr(String name, long version) { LongSparseArray<SharedLibraryInfo> versionedLib = mSharedLibraries.get(name); if (versionedLib == null) { return null; @@ -9728,16 +9728,26 @@ public class PackageManagerService extends IPackageManager.Stub private void applyDefiningSharedLibraryUpdateLocked( PackageParser.Package pkg, SharedLibraryInfo libInfo, BiConsumer<SharedLibraryInfo, SharedLibraryInfo> action) { + // Note that libraries defined by this package may be null if: + // - Package manager was unable to create the shared library. The package still + // gets installed, but the shared library does not get created. + // Or: + // - Package manager is in a state where package isn't scanned yet. This will + // get called again after scanning to fix the dependencies. if (pkg.isLibrary()) { if (pkg.staticSharedLibName != null) { SharedLibraryInfo definedLibrary = getSharedLibraryInfoLPr( pkg.staticSharedLibName, pkg.staticSharedLibVersion); - action.accept(definedLibrary, libInfo); + if (definedLibrary != null) { + action.accept(definedLibrary, libInfo); + } } else { for (String libraryName : pkg.libraryNames) { SharedLibraryInfo definedLibrary = getSharedLibraryInfoLPr( libraryName, SharedLibraryInfo.VERSION_UNDEFINED); - action.accept(definedLibrary, libInfo); + if (definedLibrary != null) { + action.accept(definedLibrary, libInfo); + } } } } |