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

Commit 87569c9e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fail if there is a size mismatch during unparcel" into main

parents 57060059 ffe62dfc
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.os;

import static android.security.Flags.failOnParcelSizeMismatch;

import static com.android.internal.util.Preconditions.checkArgument;

import static java.util.Objects.requireNonNull;
@@ -28,7 +30,6 @@ import android.annotation.SuppressLint;
import android.annotation.TestApi;
import android.app.AppOpsManager;
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Flags;
import android.ravenwood.annotation.RavenwoodKeepWholeClass;
import android.ravenwood.annotation.RavenwoodReplace;
import android.ravenwood.annotation.RavenwoodThrow;
@@ -54,8 +55,6 @@ import dalvik.annotation.optimization.CriticalNative;
import dalvik.annotation.optimization.FastNative;
import dalvik.annotation.optimization.NeverInline;

import java.nio.BufferOverflowException;
import java.nio.ReadOnlyBufferException;
import libcore.util.SneakyThrow;

import java.io.ByteArrayInputStream;
@@ -66,12 +65,14 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamClass;
import java.io.Serializable;
import java.nio.ByteBuffer;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import java.nio.ReadOnlyBufferException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -4715,9 +4716,12 @@ public final class Parcel {
            object = readValue(type, loader, clazz, itemTypes);
            int actual = dataPosition() - start;
            if (actual != length) {
                Slog.wtfStack(TAG,
                        "Unparcelling of " + object + " of type " + Parcel.valueTypeToString(type)
                                + "  consumed " + actual + " bytes, but " + length + " expected.");
                String msg = "Unparcelling of " + object + " of type " + Parcel.valueTypeToString(
                        type) + "  consumed " + actual + " bytes, but " + length + " expected.";
                if (failOnParcelSizeMismatch()) {
                    throw new BadParcelableException(msg);
                }
                Slog.wtfStack(TAG, msg);
            }
        } else {
            object = readValue(type, loader, clazz, itemTypes);
+7 −0
Original line number Diff line number Diff line
@@ -165,3 +165,10 @@ flag {
    description: "Flag for restricting implicit URI grants on Send action intents"
    bug: "295238578"
}

flag {
    name: "fail_on_parcel_size_mismatch"
    namespace: "responsible_apis"
    description: "Flag for failing instead of logging in case of parcel size mismatches"
    bug: "416031865"
}