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

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

Merge "libbinder: Parcel::appendFrom better format check" am: b558842b

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

Change-Id: Id7298372d654a6fb00bcbfb3c7a181b1cf0d9858
parents b719bea3 b558842b
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -411,8 +411,9 @@ status_t Parcel::setData(const uint8_t* buffer, size_t len)

status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len)
{
    if (parcel->isForRpc() != isForRpc()) {
        ALOGE("Cannot append Parcel of one format to another.");
    if (mSession != parcel->mSession) {
        ALOGE("Cannot append Parcel from one context to another. They may be different formats, "
              "and objects are specific to a context.");
        return BAD_TYPE;
    }

+10 −2
Original line number Diff line number Diff line
@@ -690,13 +690,21 @@ TEST_P(BinderRpc, TransactionsMustBeMarkedRpc) {
}

TEST_P(BinderRpc, AppendSeparateFormats) {
    auto proc = createRpcTestSocketServerProcess({});
    auto proc1 = createRpcTestSocketServerProcess({});
    auto proc2 = createRpcTestSocketServerProcess({});

    Parcel pRaw;

    Parcel p1;
    p1.markForBinder(proc.rootBinder);
    p1.markForBinder(proc1.rootBinder);
    p1.writeInt32(3);

    EXPECT_EQ(BAD_TYPE, p1.appendFrom(&pRaw, 0, p1.dataSize()));
    EXPECT_EQ(BAD_TYPE, pRaw.appendFrom(&p1, 0, p1.dataSize()));

    Parcel p2;
    p2.markForBinder(proc2.rootBinder);
    p2.writeInt32(7);

    EXPECT_EQ(BAD_TYPE, p1.appendFrom(&p2, 0, p2.dataSize()));
    EXPECT_EQ(BAD_TYPE, p2.appendFrom(&p1, 0, p1.dataSize()));