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

Commit 1fed65e1 authored by Steven Moreland's avatar Steven Moreland Committed by Gerrit Code Review
Browse files

Merge "libbinder: RPC checks for appendParcel"

parents 8410eca9 67753c38
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -418,6 +418,11 @@ status_t Parcel::setData(const uint8_t* buffer, size_t len)


status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, 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.");
        return BAD_TYPE;
    }

    status_t err;
    status_t err;
    const uint8_t *data = parcel->mData;
    const uint8_t *data = parcel->mData;
    const binder_size_t *objects = parcel->mObjects;
    const binder_size_t *objects = parcel->mObjects;
+13 −0
Original line number Original line Diff line number Diff line
@@ -406,6 +406,19 @@ TEST_P(BinderRpc, TransactionsMustBeMarkedRpc) {
    EXPECT_EQ(BAD_TYPE, proc.rootBinder->transact(IBinder::PING_TRANSACTION, data, &reply, 0));
    EXPECT_EQ(BAD_TYPE, proc.rootBinder->transact(IBinder::PING_TRANSACTION, data, &reply, 0));
}
}


TEST_P(BinderRpc, AppendSeparateFormats) {
    auto proc = createRpcTestSocketServerProcess(1);

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

    Parcel p2;

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

TEST_P(BinderRpc, UnknownTransaction) {
TEST_P(BinderRpc, UnknownTransaction) {
    auto proc = createRpcTestSocketServerProcess(1);
    auto proc = createRpcTestSocketServerProcess(1);
    Parcel data;
    Parcel data;