Skip to content

Commit 9749163

Browse files
[MCUX-77049] Addresses CERT INT30-C, INT31-C and INT32-C, HIS_CALLING, HIS_COMF, MISRA 21.15 issues
Signed-off-by: Michal Princ <michal.princ@nxp.com>
1 parent 85ea899 commit 9749163

File tree

5 files changed

+28
-17
lines changed

5 files changed

+28
-17
lines changed

erpc_c/infra/erpc_basic_codec.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright (c) 2014, Freescale Semiconductor, Inc.
3-
* Copyright 2016-2021 NXP
3+
* Copyright 2016-2025 NXP
44
* Copyright 2021 ACRIOS Systems s.r.o.
55
* All rights reserved.
66
*
@@ -52,7 +52,7 @@ void BasicCodec::writeData(uint32_t length, const void *value)
5252
void BasicCodec::write(bool value)
5353
{
5454
// Make sure the bool is a single byte.
55-
uint8_t v = (uint8_t)value;
55+
uint8_t v = value ? 1U : 0U;
5656

5757
writeData(sizeof(v), &v);
5858
}

erpc_c/infra/erpc_client_manager.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright (c) 2014, Freescale Semiconductor, Inc.
3-
* Copyright 2016-2021 NXP
3+
* Copyright 2016-2025 NXP
44
* Copyright 2021 ACRIOS Systems s.r.o.
55
* All rights reserved.
66
*
@@ -29,7 +29,8 @@ RequestContext ClientManager::createRequest(bool isOneway)
2929
// Create codec to read and write the request.
3030
Codec *codec = createBufferAndCodec();
3131

32-
return RequestContext(++m_sequence, codec, isOneway);
32+
m_sequence = (m_sequence == 0xFFFFFFFFU) ? 0U : m_sequence + 1U;
33+
return RequestContext(m_sequence, codec, isOneway);
3334
}
3435

3536
void ClientManager::performRequest(RequestContext &request)

erpc_c/infra/erpc_crc16.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2021 NXP
2+
* Copyright 2021-2025 NXP
33
* Copyright 2021 ACRIOS Systems s.r.o.
44
* All rights reserved.
55
*
@@ -46,7 +46,7 @@ uint16_t Crc16::computeCRC16(const uint8_t *data, uint32_t lengthInBytes)
4646
}
4747
}
4848

49-
return (uint16_t)crc;
49+
return (uint16_t)(crc & 0xFFFFU);
5050
}
5151
void Crc16::setCrcStart(uint32_t crcStart)
5252
{

erpc_c/infra/erpc_message_buffer.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright (c) 2014-2016, Freescale Semiconductor, Inc.
3-
* Copyright 2016-2023 NXP
3+
* Copyright 2016-2025 NXP
44
* Copyright 2021 ACRIOS Systems s.r.o.
55
* All rights reserved.
66
*
@@ -45,13 +45,13 @@ erpc_status_t MessageBuffer::read(uint16_t offset, void *data, uint32_t length)
4545
{
4646
err = kErpcStatus_MemoryError;
4747
}
48-
else if ((offset + length) > m_len || (offset + length) < offset)
48+
else if (offset >= m_len || length > (uint32_t)(m_len - offset))
4949
{
5050
err = kErpcStatus_BufferOverrun;
5151
}
5252
else
5353
{
54-
(void)memcpy(data, &m_buf[offset], length);
54+
(void)memcpy(data, (void *)&m_buf[offset], length);
5555
}
5656
}
5757

@@ -68,13 +68,13 @@ erpc_status_t MessageBuffer::write(uint16_t offset, const void *data, uint32_t l
6868
{
6969
err = kErpcStatus_MemoryError;
7070
}
71-
else if ((offset + length) > m_len || (offset + length) < offset)
71+
else if (offset >= m_len || length > (uint32_t)(m_len - offset))
7272
{
7373
err = kErpcStatus_BufferOverrun;
7474
}
7575
else
7676
{
77-
(void)memcpy(&m_buf[offset], data, length);
77+
(void)memcpy((void *)&m_buf[offset], data, length);
7878
}
7979
}
8080

@@ -207,7 +207,7 @@ erpc_status_t Cursor::read(void *data, uint32_t length)
207207
}
208208
else
209209
{
210-
(void)memcpy(data, m_pos, length);
210+
(void)memcpy(data, (void *)m_pos, length);
211211
m_pos += length;
212212
}
213213
}
@@ -234,7 +234,7 @@ erpc_status_t Cursor::write(const void *data, uint32_t length)
234234
}
235235
else
236236
{
237-
(void)memcpy(m_pos, data, length);
237+
(void)memcpy((void *)m_pos, data, length);
238238
m_pos += length;
239239
m_buffer.setUsed(m_buffer.getUsed() + length);
240240
}

erpc_c/infra/erpc_message_buffer.hpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright (c) 2014-2016, Freescale Semiconductor, Inc.
3-
* Copyright 2016 NXP
3+
* Copyright 2016-2025 NXP
44
* All rights reserved.
55
*
66
*
@@ -11,6 +11,7 @@
1111
#define _EMBEDDED_RPC__MESSAGE_BUFFER_H_
1212

1313
#include "erpc_common.h"
14+
#include "erpc_config_internal.h"
1415

1516
#include <cstddef>
1617
#include <stdint.h>
@@ -104,7 +105,10 @@ class MessageBuffer
104105
*
105106
* @return Length of free space of buffer.
106107
*/
107-
uint16_t getFree(void) const { return m_len - m_used; }
108+
uint16_t getFree(void) const {
109+
erpc_assert(m_used <= m_len);
110+
return m_len - m_used;
111+
}
108112

109113
/*!
110114
* @brief This function sets length of used space of buffer.
@@ -244,14 +248,20 @@ class Cursor
244248
*
245249
* @return Remaining free space in current buffer.
246250
*/
247-
uint16_t getRemaining(void) const { return m_buffer.getLength() - (uint16_t)(m_pos - m_buffer.get()); }
251+
uint16_t getRemaining(void) const {
252+
erpc_assert(m_pos >= m_buffer.get() && m_pos <= m_buffer.get() + m_buffer.getLength());
253+
return m_buffer.getLength() - (uint16_t)(m_pos - m_buffer.get());
254+
}
248255

249256
/*!
250257
* @brief Return remaining space from used of current buffer.
251258
*
252259
* @return Remaining space from used of current buffer.
253260
*/
254-
uint16_t getRemainingUsed(void) const { return m_buffer.getUsed() - (uint16_t)(m_pos - m_buffer.get()); }
261+
uint16_t getRemainingUsed(void) const {
262+
erpc_assert(m_pos >= m_buffer.get() && m_pos <= m_buffer.get() + m_buffer.getLength());
263+
return m_buffer.getUsed() - (uint16_t)(m_pos - m_buffer.get());
264+
}
255265

256266
/*!
257267
* @brief Read data from current buffer.

0 commit comments

Comments
 (0)