Added End-of-Parcel check API.

Added End-of-Parcel check API, that verifies there are no
bytes left to be read on the Parcel.

Test: atest -d android.os.cts.ParcelTest#testEnforceNoDataAvail
Bug: 195622897
Bug: 204990745
Change-Id: I3068568d8d4371b071aecd357adeb45a2d7103e4
This commit is contained in:
Hao Ke
2021-11-01 14:46:10 +00:00
parent cc09b29e59
commit d117f6f6d5
2 changed files with 14 additions and 0 deletions

View File

@@ -31470,6 +31470,7 @@ package android.os {
method public int dataPosition();
method public int dataSize();
method public void enforceInterface(@NonNull String);
method public void enforceNoDataAvail();
method public boolean hasFileDescriptors();
method public boolean hasFileDescriptors(int, int);
method public byte[] marshall();

View File

@@ -845,6 +845,19 @@ public final class Parcel {
nativeEnforceInterface(mNativePtr, interfaceName);
}
/**
* Verify there are no bytes left to be read on the Parcel.
*
* @throws BadParcelableException If the current position hasn't reached the end of the Parcel.
* When used over binder, this exception should propagate to the caller.
*/
public void enforceNoDataAvail() {
final int n = dataAvail();
if (n > 0) {
throw new BadParcelableException("Parcel data not fully consumed, unread size: " + n);
}
}
/**
* Writes the work source uid to the request headers.
*