mirror of https://github.com/ARMmbed/mbed-os.git
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 <martin.kojtal@arm.com>pull/15374/head
parent
81f40fc9f4
commit
518eb6d1c3
|
@ -19,6 +19,7 @@
|
||||||
#if DEVICE_CAN
|
#if DEVICE_CAN
|
||||||
|
|
||||||
#include "platform/mbed_power_mgmt.h"
|
#include "platform/mbed_power_mgmt.h"
|
||||||
|
#include "platform/mbed_error.h"
|
||||||
|
|
||||||
namespace mbed {
|
namespace mbed {
|
||||||
|
|
||||||
|
@ -82,6 +83,9 @@ int CAN::read(CANMessage &msg, int handle)
|
||||||
{
|
{
|
||||||
lock();
|
lock();
|
||||||
int ret = can_read(&_can, &msg, handle);
|
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();
|
unlock();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue