From 15a8ebe0a09a1ca509dbf6d2a3bafae4a01f650f Mon Sep 17 00:00:00 2001 From: wdfk-prog <1425075683@qq.com> Date: Tue, 9 Jul 2024 20:22:37 +0800 Subject: [PATCH] [components][driver][can]Fix possible memory overflow caused by RX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复RX可能导致的内存溢出情况 #8634 --- components/drivers/can/can.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/drivers/can/can.c b/components/drivers/can/can.c index 2ebab4afbc..f10e05dc55 100644 --- a/components/drivers/can/can.c +++ b/components/drivers/can/can.c @@ -43,9 +43,9 @@ static rt_err_t rt_can_init(struct rt_device *dev) /* * can interrupt routines */ -rt_inline int _can_int_rx(struct rt_can_device *can, struct rt_can_msg *data, int msgs) +rt_inline rt_ssize_t _can_int_rx(struct rt_can_device *can, struct rt_can_msg *data, rt_ssize_t msgs) { - int size; + rt_ssize_t size; struct rt_can_rx_fifo *rx_fifo; RT_ASSERT(can != RT_NULL); size = msgs; @@ -54,7 +54,7 @@ rt_inline int _can_int_rx(struct rt_can_device *can, struct rt_can_msg *data, in RT_ASSERT(rx_fifo != RT_NULL); /* read from software FIFO */ - while (msgs) + while (msgs / sizeof(struct rt_can_msg) > 0) { rt_base_t level; #ifdef RT_CAN_USING_HDR