From c0bba8b18b41356721c2ebb25af83bc5bb5a74b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Kongstad?= Date: Fri, 27 Jan 2017 10:15:49 +0100 Subject: [PATCH] Fix ArrayMap.get vs ArrayMap.valueAt typo Replace incorrect call to ArrayMap.get with correct call ArrayMap.valueAt. This bug was discovered when removing an overlay from /vendor/overlay and restarting the device. The OMS settings file still referred to the overlay, and when the settings item was to be removed, the following crash occurred. *** FATAL EXCEPTION IN SYSTEM PROCESS: main java.lang.NullPointerException: Attempt to read from field 'java.lang.String android.content.om.OverlayInfo.packageName' on a null object reference at com.android.server.om.OverlayManagerServiceImpl.onSwitchUser(OverlayManagerServiceImpl.java:121) at com.android.server.om.OverlayManagerService.onSwitchUser(OverlayManagerService.java:257) at com.android.server.om.OverlayManagerService.(OverlayManagerService.java:237) at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:580) at com.android.server.SystemServer.run(SystemServer.java:363) at com.android.server.SystemServer.main(SystemServer.java:238) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:226) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:726) Test: adb exec-out stop && adb exec-out rm /vendor/overlay/... && adb exec-out start Change-Id: I341a8d6eb90555b9169e5cd7dfac87d850b72e9b --- .../java/com/android/server/om/OverlayManagerServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java index 6af1c3b20df29..db133f876d17d 100644 --- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java @@ -130,7 +130,7 @@ final class OverlayManagerServiceImpl { // installed and should be removed final int storedOverlayInfosSize = storedOverlayInfos.size(); for (int i = 0; i < storedOverlayInfosSize; i++) { - final OverlayInfo oi = storedOverlayInfos.get(i); + final OverlayInfo oi = storedOverlayInfos.valueAt(i); mSettings.remove(oi.packageName, oi.userId); removeIdmapIfPossible(oi); packagesToUpdateAssets.add(oi.targetPackageName);