diff options
| author | Tony Mak <tonymak@google.com> | 2016-06-20 15:55:25 +0100 |
|---|---|---|
| committer | Tony Mak <tonymak@google.com> | 2016-06-20 19:41:08 +0000 |
| commit | 1d18efe080f63f6518f06ebfb85d2bad4556590c (patch) | |
| tree | 00759fb5cd3ef08997db38c8363fe4798dab2744 /core/java/android/content/RestrictionsManager.java | |
| parent | 955f8ab45ca97e002b89ecb753853a2b79c27e6d (diff) | |
Fix the handling of bundle array in RestrictionsManager
Fix: 29506624
Change-Id: I0683d406f8b70d5d5f78bfc337d3952b6513d102
Diffstat (limited to 'core/java/android/content/RestrictionsManager.java')
| -rw-r--r-- | core/java/android/content/RestrictionsManager.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/core/java/android/content/RestrictionsManager.java b/core/java/android/content/RestrictionsManager.java index 6893067e060b..88aae6655428 100644 --- a/core/java/android/content/RestrictionsManager.java +++ b/core/java/android/content/RestrictionsManager.java @@ -719,10 +719,20 @@ public class RestrictionsManager { bundle.putBundle(entry.getKey(), childBundle); break; case RestrictionEntry.TYPE_BUNDLE_ARRAY: - restrictions = entry.getRestrictions(); - Bundle[] bundleArray = new Bundle[restrictions.length]; - for (int i = 0; i < restrictions.length; i++) { - bundleArray[i] = addRestrictionToBundle(new Bundle(), restrictions[i]); + RestrictionEntry[] bundleRestrictionArray = entry.getRestrictions(); + Bundle[] bundleArray = new Bundle[bundleRestrictionArray.length]; + for (int i = 0; i < bundleRestrictionArray.length; i++) { + RestrictionEntry[] bundleRestrictions = + bundleRestrictionArray[i].getRestrictions(); + if (bundleRestrictions == null) { + // Non-bundle entry found in bundle array. + Log.w(TAG, "addRestrictionToBundle: " + + "Non-bundle entry found in bundle array"); + bundleArray[i] = new Bundle(); + } else { + bundleArray[i] = convertRestrictionsToBundle(Arrays.asList( + bundleRestrictions)); + } } bundle.putParcelableArray(entry.getKey(), bundleArray); break; |
