diff options
author | Narayan Kamath <narayan@google.com> | 2014-01-07 10:02:57 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-01-07 10:02:57 +0000 |
commit | 7e29625463e6034147c24992d0ad319ddf426088 (patch) | |
tree | 40370662791c2368d711678da009e2c98de42de4 | |
parent | 4440a8244ea4fdd7c63083bcd7d4b179e851c17a (diff) | |
parent | 2ac3cb7aef7c8a51cbeb6d34b648dedcb4363994 (diff) | |
download | frameworks_base-7e29625463e6034147c24992d0ad319ddf426088.zip frameworks_base-7e29625463e6034147c24992d0ad319ddf426088.tar.gz frameworks_base-7e29625463e6034147c24992d0ad319ddf426088.tar.bz2 |
Merge "Fix broken XML parsing idiom."
3 files changed, 19 insertions, 3 deletions
diff --git a/services/java/com/android/server/am/CompatModePackages.java b/services/java/com/android/server/am/CompatModePackages.java index 59e6787..4d5577b 100644 --- a/services/java/com/android/server/am/CompatModePackages.java +++ b/services/java/com/android/server/am/CompatModePackages.java @@ -64,9 +64,14 @@ public final class CompatModePackages { XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis, null); int eventType = parser.getEventType(); - while (eventType != XmlPullParser.START_TAG) { + while (eventType != XmlPullParser.START_TAG && + eventType != XmlPullParser.END_DOCUMENT) { eventType = parser.next(); } + if (eventType == XmlPullParser.END_DOCUMENT) { + return; + } + String tagName = parser.getName(); if ("compat-packages".equals(tagName)) { eventType = parser.next(); diff --git a/services/java/com/android/server/am/UsageStatsService.java b/services/java/com/android/server/am/UsageStatsService.java index e96d8b1..09cb344 100644 --- a/services/java/com/android/server/am/UsageStatsService.java +++ b/services/java/com/android/server/am/UsageStatsService.java @@ -396,9 +396,14 @@ public final class UsageStatsService extends IUsageStats.Stub { XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis, null); int eventType = parser.getEventType(); - while (eventType != XmlPullParser.START_TAG) { + while (eventType != XmlPullParser.START_TAG && + eventType != XmlPullParser.END_DOCUMENT) { eventType = parser.next(); } + if (eventType == XmlPullParser.END_DOCUMENT) { + return; + } + String tagName = parser.getName(); if ("usage-history".equals(tagName)) { String pkg = null; diff --git a/services/java/com/android/server/content/SyncStorageEngine.java b/services/java/com/android/server/content/SyncStorageEngine.java index 5ebf9ea..124bc60 100644 --- a/services/java/com/android/server/content/SyncStorageEngine.java +++ b/services/java/com/android/server/content/SyncStorageEngine.java @@ -1697,9 +1697,15 @@ public class SyncStorageEngine extends Handler { XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis, null); int eventType = parser.getEventType(); - while (eventType != XmlPullParser.START_TAG) { + while (eventType != XmlPullParser.START_TAG && + eventType != XmlPullParser.END_DOCUMENT) { eventType = parser.next(); } + if (eventType == XmlPullParser.END_DOCUMENT) { + Log.i(TAG, "No initial accounts"); + return; + } + String tagName = parser.getName(); if ("accounts".equals(tagName)) { String listen = parser.getAttributeValue(null, XML_ATTR_LISTEN_FOR_TICKLES); |