Skip to content

Commit

Permalink
CAN: read only up to 8 bytes
Browse files Browse the repository at this point in the history
If HAL implementation writes more than 8 bytes of data, error immediately.
CANMessage defines only 8 bytes of data, lenght cannot be > 8.

This fixes ARMmbed#15361

Signed-off-by: Martin Kojtal <martin.kojtal@arm.com>
  • Loading branch information
0xc0170 authored and multiplemonomials committed May 17, 2023
1 parent cae29bb commit 8203f58
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/source/CAN.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#if DEVICE_CAN

#include "platform/mbed_power_mgmt.h"
#include "platform/mbed_error.h"

namespace mbed {

Expand Down Expand Up @@ -82,6 +83,9 @@ int CAN::read(CANMessage &msg, int handle)
{
lock();
int ret = can_read(&_can, &msg, handle);
if (msg.len > 8) {
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_CAN, MBED_ERROR_CODE_READ_FAILED), "Read tried to write more than 8 bytes");
}
unlock();
return ret;
}
Expand Down

0 comments on commit 8203f58

Please sign in to comment.