summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2023-03-28 18:28:15 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-03-28 18:28:15 +0000
commit32fe2ac6bfaada1ed677f9e1d36f08725498708e (patch)
treebff8ca2b2e805daabf2f08698858d724cfee7d56
parent46c57d56bf8e832a862419ef91de71005372560b (diff)
parent2448c5a38794e0d6420c3db6ca1734e51a317138 (diff)
Merge "Handle invalid data during job loading." into sc-v2-dev am: 5fdd417397 am: 2448c5a387
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20026090 Change-Id: I77c25ec8378859f51ffd687bf2b683e1198a8943 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobStore.java17
1 files changed, 15 insertions, 2 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
index dfa1442a3192..fcfb45c5f1df 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
@@ -742,6 +742,10 @@ public final class JobStore {
}
} catch (XmlPullParserException | IOException e) {
Slog.wtf(TAG, "Error jobstore xml.", e);
+ } catch (Exception e) {
+ // Crashing at this point would result in a boot loop, so live with a general
+ // Exception for system stability's sake.
+ Slog.wtf(TAG, "Unexpected exception", e);
} finally {
if (mPersistInfo.countAllJobsLoaded < 0) { // Only set them once.
mPersistInfo.countAllJobsLoaded = numJobs;
@@ -890,6 +894,9 @@ public final class JobStore {
} catch (IOException e) {
Slog.d(TAG, "Error I/O Exception.", e);
return null;
+ } catch (IllegalArgumentException e) {
+ Slog.e(TAG, "Constraints contained invalid data", e);
+ return null;
}
parser.next(); // Consume </constraints>
@@ -986,8 +993,14 @@ public final class JobStore {
return null;
}
- PersistableBundle extras = PersistableBundle.restoreFromXml(parser);
- jobBuilder.setExtras(extras);
+ final PersistableBundle extras;
+ try {
+ extras = PersistableBundle.restoreFromXml(parser);
+ jobBuilder.setExtras(extras);
+ } catch (IllegalArgumentException e) {
+ Slog.e(TAG, "Persisted extras contained invalid data", e);
+ return null;
+ }
parser.nextTag(); // Consume </extras>
final JobInfo builtJob;