Merge "Handle invalid data during job loading." into sc-dev am: 1a150853cd

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20026091

Change-Id: Ib7faa46f3afeb13e85088ca56f83a86254a7714d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Kweku Adams
2023-03-28 17:56:31 +00:00
committed by Automerger Merge Worker

View File

@@ -733,6 +733,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;
@@ -869,6 +873,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>
@@ -965,8 +972,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;