summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorwdfk-prog <[email protected]>2024-07-09 20:22:37 +0800
committerGitHub <[email protected]>2024-07-09 20:22:37 +0800
commit15a8ebe0a09a1ca509dbf6d2a3bafae4a01f650f (patch)
tree348a6af766cc54a4253eae3d36c174e57857163b /components/drivers
parentbefa47807341612e409f595b4cf16d55f016ff26 (diff)
[components][driver][can]Fix possible memory overflow caused by RX
修复RX可能导致的内存溢出情况 #8634
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/can/can.c6
1 files 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