Update Parcel readLazyValue to ignore negative object lengths
Addresses a security vulnerability where a (-8) length object would cause dataPosition to be reset back to the statt of the value, and be re-read again. Bug: 240138294 Test: atest ParcelTest BundleTest AmbiguousBundlesTest Test: manually ran PoC Change-Id: I1ab1df6f2a802d8cdf02c89c12959b09d7b1a5c4
This commit is contained in:
@@ -4416,6 +4416,9 @@ public final class Parcel {
|
||||
int type = readInt();
|
||||
if (isLengthPrefixed(type)) {
|
||||
int objectLength = readInt();
|
||||
if (objectLength < 0) {
|
||||
return null;
|
||||
}
|
||||
int end = MathUtils.addOrThrow(dataPosition(), objectLength);
|
||||
int valueLength = end - start;
|
||||
setDataPosition(end);
|
||||
|
||||
Reference in New Issue
Block a user