diff options
Diffstat (limited to 'services/core/java/com/android/server/slice/SlicePermissionManager.java')
-rw-r--r-- | services/core/java/com/android/server/slice/SlicePermissionManager.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/slice/SlicePermissionManager.java b/services/core/java/com/android/server/slice/SlicePermissionManager.java index 315d5e39c94b..1d1c28f5f9b7 100644 --- a/services/core/java/com/android/server/slice/SlicePermissionManager.java +++ b/services/core/java/com/android/server/slice/SlicePermissionManager.java @@ -175,18 +175,24 @@ public class SlicePermissionManager implements DirtyTracker { handlePersist(); } for (String file : new File(mSliceDir.getAbsolutePath()).list()) { - if (file.isEmpty()) continue; try (ParserHolder parser = getParser(file)) { - Persistable p; - while (parser.parser.getEventType() != XmlPullParser.START_TAG) { + Persistable p = null; + while (parser.parser.getEventType() != XmlPullParser.END_DOCUMENT) { + if (parser.parser.getEventType() == XmlPullParser.START_TAG) { + if (SliceClientPermissions.TAG_CLIENT.equals(parser.parser.getName())) { + p = SliceClientPermissions.createFrom(parser.parser, tracker); + } else { + p = SliceProviderPermissions.createFrom(parser.parser, tracker); + } + break; + } parser.parser.next(); } - if (SliceClientPermissions.TAG_CLIENT.equals(parser.parser.getName())) { - p = SliceClientPermissions.createFrom(parser.parser, tracker); + if (p != null) { + p.writeTo(out); } else { - p = SliceProviderPermissions.createFrom(parser.parser, tracker); + Slog.w(TAG, "Invalid or empty slice permissions file: " + file); } - p.writeTo(out); } } |