From 518eb6d1c3a693a4d0a77d39c6ae48fab9454687 Mon Sep 17 00:00:00 2001 From: Martin Kojtal Date: Mon, 16 Jan 2023 15:40:35 +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 https://github.com/ARMmbed/mbed-os/issues/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 f8aa18e00c1..6e5b149e117 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; }