Skip to content

Commit 29e8e29

Browse files
committed
Fixed rpmsg tty
Signed-off-by: Cervenka Dusan <[email protected]>
1 parent fcac1c4 commit 29e8e29

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

erpc_c/infra/erpc_framed_transport.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ erpc_status_t FramedTransport::receive(MessageBuffer *message)
6060

6161
erpc_assert((m_crcImpl != NULL) && ("Uninitialized Crc16 object." != NULL));
6262

63-
if (message->getLength() < reserveHeaderSize())
63+
// e.g. rpmsg tty may have nullptr and buffer is assigned in receive function.
64+
if ((message->get() != nullptr) && (message->getLength() < reserveHeaderSize()))
6465
{
6566
retVal = kErpcStatus_MemoryError;
6667
}
@@ -72,15 +73,20 @@ erpc_status_t FramedTransport::receive(MessageBuffer *message)
7273

7374
// Receive header first.
7475
retVal = underlyingReceive(message, reserveHeaderSize(), 0);
75-
static_cast<void>(memcpy(&h.m_crcHeader, message->get(), sizeof(h.m_crcHeader)));
76-
offset = sizeof(h.m_crcHeader);
77-
static_cast<void>(memcpy(&h.m_messageSize, &message->get()[offset], sizeof(h.m_messageSize)));
78-
offset += sizeof(h.m_messageSize);
79-
static_cast<void>(memcpy(&h.m_crcBody, &message->get()[offset], sizeof(h.m_crcBody)));
80-
offset += sizeof(h.m_crcBody);
76+
if ((retVal == kErpcStatus_Success) && (message->getLength() < reserveHeaderSize()))
77+
{
78+
retVal = kErpcStatus_MemoryError;
79+
}
8180

8281
if (retVal == kErpcStatus_Success)
8382
{
83+
static_cast<void>(memcpy(&h.m_crcHeader, message->get(), sizeof(h.m_crcHeader)));
84+
offset = sizeof(h.m_crcHeader);
85+
static_cast<void>(memcpy(&h.m_messageSize, &message->get()[offset], sizeof(h.m_messageSize)));
86+
offset += sizeof(h.m_messageSize);
87+
static_cast<void>(memcpy(&h.m_crcBody, &message->get()[offset], sizeof(h.m_crcBody)));
88+
offset += sizeof(h.m_crcBody);
89+
8490
ERPC_READ_AGNOSTIC_16(h.m_crcHeader);
8591
ERPC_READ_AGNOSTIC_16(h.m_messageSize);
8692
ERPC_READ_AGNOSTIC_16(h.m_crcBody);

0 commit comments

Comments
 (0)