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

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

Merge "RPC Binder: shutdown on ENOMEM" into udc-dev am: 5d69cb7a am: 0e57b3d1

parents 2ec52d55 0e57b3d1
Loading
Loading
Loading
Loading
+11 −1
Original line number Original line Diff line number Diff line
@@ -656,7 +656,13 @@ status_t RpcState::waitForReply(const sp<RpcSession::RpcConnection>& connection,
    memset(&rpcReply, 0, sizeof(RpcWireReply)); // zero because of potential short read
    memset(&rpcReply, 0, sizeof(RpcWireReply)); // zero because of potential short read


    CommandData data(command.bodySize - rpcReplyWireSize);
    CommandData data(command.bodySize - rpcReplyWireSize);
    if (!data.valid()) return NO_MEMORY;
    if (!data.valid()) {
        // b/404210068 - if we run out of memory, the wire protocol gets messed up.
        // so shutdown. We would need to read all the transaction data anyway and
        // send a reply still to gracefully recover.
        (void)session->shutdownAndWait(false);
        return NO_MEMORY;
    }


    iovec iovs[]{
    iovec iovs[]{
            {&rpcReply, rpcReplyWireSize},
            {&rpcReply, rpcReplyWireSize},
@@ -813,6 +819,10 @@ status_t RpcState::processTransact(


    CommandData transactionData(command.bodySize);
    CommandData transactionData(command.bodySize);
    if (!transactionData.valid()) {
    if (!transactionData.valid()) {
        // b/404210068 - if we run out of memory, the wire protocol gets messed up.
        // so shutdown. We would need to read all the transaction data anyway and
        // send a reply still to gracefully recover.
        (void)session->shutdownAndWait(false);
        return NO_MEMORY;
        return NO_MEMORY;
    }
    }
    iovec iov{transactionData.data(), transactionData.size()};
    iovec iov{transactionData.data(), transactionData.size()};