Merge "Fail WorkSourceTest if reading from parcel failed" into udc-dev am: 688353955d

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

Change-Id: I92e46754a00bf7f6554bab23c61153937459bf92
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-05-02 15:17:57 +00:00
committed by Automerger Merge Worker

View File

@@ -77,15 +77,18 @@ static void nativeUnparcelAndVerifyWorkSource(JNIEnv* env, jobject /* obj */, jo
Parcel* parcel = nativeGetParcelData(env, wsParcel); Parcel* parcel = nativeGetParcelData(env, wsParcel);
int32_t endMarker; int32_t endMarker;
// read WorkSource and if no error read end marker status_t err = ws.readFromParcel(parcel);
status_t err = ws.readFromParcel(parcel) ?: parcel->readInt32(&endMarker);
int32_t dataAvailable = parcel->dataAvail();
if (err != OK) { if (err != OK) {
ALOGE("WorkSource readFromParcel failed %d", err); jniThrowException(env, "java/lang/IllegalArgumentException",
StringPrintf("WorkSource readFromParcel failed: %d", err).c_str());
}
err = parcel->readInt32(&endMarker);
if (err != OK) {
jniThrowException(env, "java/lang/IllegalArgumentException",
StringPrintf("Failed to read endMarker: %d", err).c_str());
} }
// Now we have a native WorkSource object, verify it. // Now we have a native WorkSource object, verify it.
int32_t dataAvailable = parcel->dataAvail();
if (dataAvailable > 0) { // not all data read from the parcel if (dataAvailable > 0) { // not all data read from the parcel
jniThrowException(env, "java/lang/IllegalArgumentException", jniThrowException(env, "java/lang/IllegalArgumentException",
StringPrintf("WorkSource contains more data than native read (%d)", StringPrintf("WorkSource contains more data than native read (%d)",