From 0655edd611c10a587d5fc5a1236cfa27b45a4247 Mon Sep 17 00:00:00 2001 From: songjinshi Date: Wed, 18 May 2016 19:55:32 +0800 Subject: [PATCH] Fixes the system server crash issues caused by null pointer in NetworkPolicyManagerService. if the multi user occurs switch and remove then to getPackagesForUid the return value will got null,because the user remove is not synced with the getPackagesForUid,so we must check the return value for getPackagesForUid to avoid the crash. https://code.google.com/p/android/issues/detail?id=211972 Change-Id: If921582da86dbe862f2dad337b0a8d1f20593c99 Signed-off-by: songjinshi --- .../android/server/net/NetworkPolicyManagerService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index 02c16ae3abca2..aff87ff49ca5c 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -2326,9 +2326,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final String[] packages = mContext.getPackageManager().getPackagesForUid(uid); final int userId = UserHandle.getUserId(uid); - for (String packageName : packages) { - if (!mUsageStats.isAppIdle(packageName, uid, userId)) { - return false; + if (packages != null) { + for (String packageName : packages) { + if (!mUsageStats.isAppIdle(packageName, uid, userId)) { + return false; + } } } return true;