diff options
| author | 2023-03-28 18:28:15 +0000 | |
|---|---|---|
| committer | 2023-03-28 18:28:15 +0000 | |
| commit | 32fe2ac6bfaada1ed677f9e1d36f08725498708e (patch) | |
| tree | bff8ca2b2e805daabf2f08698858d724cfee7d56 | |
| parent | 46c57d56bf8e832a862419ef91de71005372560b (diff) | |
| parent | 2448c5a38794e0d6420c3db6ca1734e51a317138 (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.java | 17 |
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; |