diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2013-09-25 23:52:36 -0700 |
---|---|---|
committer | Svetoslav <svetoslavganov@google.com> | 2013-09-26 12:34:49 -0700 |
commit | cb247866acf10b039e02b600f8471b4a508f0ce8 (patch) | |
tree | b22b0f8e5854c1d06a1425d69b81694bcdac4d32 /services/java | |
parent | b198115e492c390537ec400caa96baab1ccec5b9 (diff) | |
download | frameworks_base-cb247866acf10b039e02b600f8471b4a508f0ce8.zip frameworks_base-cb247866acf10b039e02b600f8471b4a508f0ce8.tar.gz frameworks_base-cb247866acf10b039e02b600f8471b4a508f0ce8.tar.bz2 |
PackageManager#queryIntentServices breaks its contract.
PackageManager#queryIntentServices javadoc contract states that this
method (and the like) never returns null, rather an empty list if
no result is found. However, there is a path in the PackageManagerService
that returns null, thus breaking the contract. Handling the null list
explicitly.
bug:10930560
Change-Id: I708c51b8b7075e529145c8b0bf159efd6b697532
Diffstat (limited to 'services/java')
-rw-r--r-- | services/java/com/android/server/print/PrintManagerService.java | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/services/java/com/android/server/print/PrintManagerService.java b/services/java/com/android/server/print/PrintManagerService.java index 5f8708a..9810bf0 100644 --- a/services/java/com/android/server/print/PrintManagerService.java +++ b/services/java/com/android/server/print/PrintManagerService.java @@ -413,6 +413,10 @@ public final class PrintManagerService extends IPrintManager.Stub { .queryIntentServicesAsUser(intent, PackageManager.GET_SERVICES, getChangingUserId()); + if (installedServices == null) { + return; + } + final int installedServiceCount = installedServices.size(); for (int i = 0; i < installedServiceCount; i++) { ServiceInfo serviceInfo = installedServices.get(i).serviceInfo; |