Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae653f5e authored by Steven Moreland's avatar Steven Moreland Committed by Automerger Merge Worker
Browse files

Merge "libbinder: Status - fix read at end of Parcel" am: c25cfc6c am:...

Merge "libbinder: Status - fix read at end of Parcel" am: c25cfc6c am: 83562e55 am: 4590ce6a am: 966f4876

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2117835



Change-Id: I78dea152a9215b161cb8927c8d713b726ef53336
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 747e4a40 966f4876
Loading
Loading
Loading
Loading
+8 −2
Original line number Original line Diff line number Diff line
@@ -139,6 +139,9 @@ status_t Status::readFromParcel(const Parcel& parcel) {
    mMessage = String8(message.value_or(String16()));
    mMessage = String8(message.value_or(String16()));


    // Skip over the remote stack trace data
    // Skip over the remote stack trace data
    const size_t remote_start = parcel.dataPosition();
    // Get available size before reading more
    const size_t remote_avail = parcel.dataAvail();
    int32_t remote_stack_trace_header_size;
    int32_t remote_stack_trace_header_size;
    status = parcel.readInt32(&remote_stack_trace_header_size);
    status = parcel.readInt32(&remote_stack_trace_header_size);
    if (status != OK) {
    if (status != OK) {
@@ -146,13 +149,16 @@ status_t Status::readFromParcel(const Parcel& parcel) {
        return status;
        return status;
    }
    }
    if (remote_stack_trace_header_size < 0 ||
    if (remote_stack_trace_header_size < 0 ||
        static_cast<size_t>(remote_stack_trace_header_size) > parcel.dataAvail()) {
        static_cast<size_t>(remote_stack_trace_header_size) > remote_avail) {


        android_errorWriteLog(0x534e4554, "132650049");
        android_errorWriteLog(0x534e4554, "132650049");
        setFromStatusT(UNKNOWN_ERROR);
        setFromStatusT(UNKNOWN_ERROR);
        return UNKNOWN_ERROR;
        return UNKNOWN_ERROR;
    }
    }
    parcel.setDataPosition(parcel.dataPosition() + remote_stack_trace_header_size);

    if (remote_stack_trace_header_size != 0) {
        parcel.setDataPosition(remote_start + remote_stack_trace_header_size);
    }


    if (mException == EX_SERVICE_SPECIFIC) {
    if (mException == EX_SERVICE_SPECIFIC) {
        status = parcel.readInt32(&mErrorCode);
        status = parcel.readInt32(&mErrorCode);