From 7a3f1bc8a04a1fb9d4f15a9eff1702c28cd3b05c Mon Sep 17 00:00:00 2001 From: Martin Kojtal Date: Mon, 16 Jan 2023 16:04:21 +0000 Subject: [PATCH] CAN: read only up to 8 bytes 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 --- drivers/source/CAN.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/source/CAN.cpp b/drivers/source/CAN.cpp index 4dc91810a4..b4b715676a 100644 --- a/drivers/source/CAN.cpp +++ b/drivers/source/CAN.cpp @@ -19,6 +19,7 @@ #if DEVICE_CAN #include "platform/mbed_power_mgmt.h" +#include "platform/mbed_error.h" namespace mbed { @@ -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; }