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

Commit ecb45f7e authored by Stanislav Zholnin's avatar Stanislav Zholnin
Browse files

Fix issues with getHistoricalOps() results overflowing Binder connection.

Test: manually tested.
Bug: 186193371
Change-Id: I391cb36a86308c89056965a47596707257a2a0af
parent 0f314d68
Loading
Loading
Loading
Loading
+7 −20
Original line number Original line Diff line number Diff line
@@ -6844,7 +6844,7 @@ public class AppOpsManager {
            writeLongSparseLongArrayToParcel(mAccessCount, parcel);
            writeLongSparseLongArrayToParcel(mAccessCount, parcel);
            writeLongSparseLongArrayToParcel(mRejectCount, parcel);
            writeLongSparseLongArrayToParcel(mRejectCount, parcel);
            writeLongSparseLongArrayToParcel(mAccessDuration, parcel);
            writeLongSparseLongArrayToParcel(mAccessDuration, parcel);
            writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel);
            writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel, flags);
        }
        }


        @Override
        @Override
@@ -9696,29 +9696,16 @@ public class AppOpsManager {
    }
    }


    private static void writeDiscreteAccessArrayToParcel(
    private static void writeDiscreteAccessArrayToParcel(
            @Nullable List<AttributedOpEntry> array, @NonNull Parcel parcel) {
            @Nullable List<AttributedOpEntry> array, @NonNull Parcel parcel, int flags) {
        if (array != null) {
        ParceledListSlice<AttributedOpEntry> listSlice =
            final int size = array.size();
                array == null ? null : new ParceledListSlice<>(array);
            parcel.writeInt(size);
        parcel.writeParcelable(listSlice, flags);
            for (int i = 0; i < size; i++) {
                array.get(i).writeToParcel(parcel, 0);
            }
        } else {
            parcel.writeInt(-1);
        }
    }
    }


    private static @Nullable List<AttributedOpEntry> readDiscreteAccessArrayFromParcel(
    private static @Nullable List<AttributedOpEntry> readDiscreteAccessArrayFromParcel(
            @NonNull Parcel parcel) {
            @NonNull Parcel parcel) {
        final int size = parcel.readInt();
        final ParceledListSlice<AttributedOpEntry> listSlice = parcel.readParcelable(null);
        if (size < 0) {
        return listSlice == null ? null : listSlice.getList();
            return null;
        }
        final List<AttributedOpEntry> array = new ArrayList<>(size);
        for (int i = 0; i < size; i++) {
            array.add(new AttributedOpEntry(parcel));
        }
        return array;
    }
    }


    /**
    /**