summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPinyao Ting <pinyaoting@google.com>2020-06-10 15:37:41 -0700
committerTobias Thierer <tobiast@google.com>2020-06-11 18:59:03 +0100
commit4c0218e8aaada338305e70f486af95134744b92c (patch)
treed4241f08da145a36458099015890dbbd13606a15
parent323e46bc26bdc77ce5210f32f620f065e87c65f5 (diff)
downloadbase-4c0218e8aaada338305e70f486af95134744b92c.tar.gz
Throw XmlParserException when client tag cannot be found when parsing
slice permissions. There are three call-sites of SliceClientPermissions#createFrom: 1) SlicePermissionManager#writeBackup and SlicePermissionManager#readRestore ensures the client tag exists before calling SliceClientPermissions#createFrom. 2) SlicePermissionManager#getClient is expecting Exception from SliceClientPermissions#createFrom when it fails to parse the xml, and creates clean permission object accordingly. This CL ensures an exception was thrown when the xml parsing cannot be completed. Bug: 121144871 Test: run test suite in forrest frameworks/base/services/tests/uiservicestests/src/com/android/server/slice Change-Id: Id7a239f16b95d16ba17bf651d474dec86492ef47 (cherry picked from commit 427f4f67a716d95ba337dccc5f6bc52596bc82cf)
-rw-r--r--services/core/java/com/android/server/slice/SliceClientPermissions.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/slice/SliceClientPermissions.java b/services/core/java/com/android/server/slice/SliceClientPermissions.java
index e461e0d43735..9562f2f8b339 100644
--- a/services/core/java/com/android/server/slice/SliceClientPermissions.java
+++ b/services/core/java/com/android/server/slice/SliceClientPermissions.java
@@ -160,6 +160,9 @@ public class SliceClientPermissions implements DirtyTracker, Persistable {
// Get to the beginning of the provider.
while (parser.getEventType() != XmlPullParser.START_TAG
|| !TAG_CLIENT.equals(parser.getName())) {
+ if (parser.getEventType() == XmlPullParser.END_DOCUMENT) {
+ throw new XmlPullParserException("Can't find client tag in xml");
+ }
parser.next();
}
int depth = parser.getDepth();
@@ -173,6 +176,9 @@ public class SliceClientPermissions implements DirtyTracker, Persistable {
parser.next();
while (parser.getDepth() > depth) {
+ if (parser.getEventType() == XmlPullParser.END_DOCUMENT) {
+ return provider;
+ }
if (parser.getEventType() == XmlPullParser.START_TAG
&& TAG_AUTHORITY.equals(parser.getName())) {
try {