From 2abd66c4ffdb7905128b1ca245d4ccb97cbda1c8 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 5 May 2017 15:26:13 -0600 Subject: [PATCH] Defeat @Nullable String[] with empty list. Test: builds, boots Bug: 37577123 Change-Id: I6bf1af565398c30aecc0939a23846c0f85c13ffe --- core/java/com/android/internal/util/ArrayUtils.java | 4 ++++ .../java/com/android/server/usage/StorageStatsService.java | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/util/ArrayUtils.java b/core/java/com/android/internal/util/ArrayUtils.java index 73886a700c7ff..91bc6813c5fcd 100644 --- a/core/java/com/android/internal/util/ArrayUtils.java +++ b/core/java/com/android/internal/util/ArrayUtils.java @@ -583,4 +583,8 @@ public class ArrayUtils { } return size - leftIdx; } + + public static @NonNull String[] defeatNullable(@Nullable String[] val) { + return (val != null) ? val : EmptyArray.STRING; + } } diff --git a/services/usage/java/com/android/server/usage/StorageStatsService.java b/services/usage/java/com/android/server/usage/StorageStatsService.java index e13665bed2756..d9abc1595fc6d 100644 --- a/services/usage/java/com/android/server/usage/StorageStatsService.java +++ b/services/usage/java/com/android/server/usage/StorageStatsService.java @@ -16,6 +16,8 @@ package com.android.server.usage; +import static com.android.internal.util.ArrayUtils.defeatNullable; + import android.app.AppOpsManager; import android.app.usage.ExternalStorageStats; import android.app.usage.IStorageStatsManager; @@ -232,7 +234,7 @@ public class StorageStatsService extends IStorageStatsManager.Stub { enforcePermission(Binder.getCallingUid(), callingPackage); } - if (mPackage.getPackagesForUid(appInfo.uid).length == 1) { + if (defeatNullable(mPackage.getPackagesForUid(appInfo.uid)).length == 1) { // Only one package inside UID means we can fast-path return queryStatsForUid(volumeUuid, appInfo.uid, callingPackage); } else { @@ -276,7 +278,7 @@ public class StorageStatsService extends IStorageStatsManager.Stub { enforcePermission(Binder.getCallingUid(), callingPackage); } - final String[] packageNames = mPackage.getPackagesForUid(uid); + final String[] packageNames = defeatNullable(mPackage.getPackagesForUid(uid)); final long[] ceDataInodes = new long[packageNames.length]; String[] codePaths = new String[0];