mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
44fa294eca
Signed-off-by: Tad <tad@spotco.us>
42 lines
1.9 KiB
Diff
42 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Michael Wright <michaelwr@google.com>
|
|
Date: Mon, 26 Sep 2022 20:37:33 +0100
|
|
Subject: [PATCH] Reconcile WorkSource parcel and unparcel code.
|
|
|
|
Prior to this CL, WorkSources would Parcel their list of WorkChains as
|
|
-1 if null, or the size of the list followed by the list itself if
|
|
non-null. When reading it back in, on the other hand, they would check
|
|
if the size was positive, and only then read the list from the Parcel.
|
|
This works for all cases except when the WorkSource has an empty but
|
|
non-null list of WorkChains as the list would get written to the parcel,
|
|
but then never read on the other side.
|
|
|
|
If parceling a list was a no-op when empty this wouldn't be an issue,
|
|
but it must write at least its size into the parcel to know how many
|
|
elements to extract. In the empty list case, this single element is left
|
|
unread as the size is not positive which essentially corrupts any future
|
|
items read from that same parcelable.
|
|
|
|
Bug: 220302519
|
|
Test: atest android.security.cts.WorkSourceTest#testWorkChainParceling
|
|
Change-Id: I2fec40dfced420ca38e717059b0e95ee8ef9946a
|
|
(cherry picked from commit 266b3bddcf14d448c0972db64b42950f76c759e3)
|
|
Merged-In: I2fec40dfced420ca38e717059b0e95ee8ef9946a
|
|
---
|
|
core/java/android/os/WorkSource.java | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java
|
|
index 0b4a56121038..4e7a280aa2c1 100644
|
|
--- a/core/java/android/os/WorkSource.java
|
|
+++ b/core/java/android/os/WorkSource.java
|
|
@@ -114,7 +114,7 @@ public class WorkSource implements Parcelable {
|
|
mNames = in.createStringArray();
|
|
|
|
int numChains = in.readInt();
|
|
- if (numChains > 0) {
|
|
+ if (numChains >= 0) {
|
|
mChains = new ArrayList<>(numChains);
|
|
in.readParcelableList(mChains, WorkChain.class.getClassLoader());
|
|
} else {
|