感谢您的反馈!
这个Bug在解决这个帖子的Issue时被修复掉了,但是最新的驱动还需要一点时间才能release,所以目前建议您修改如下:
ab87917d-5ba6-4c2e-bd45-8154bdcf0240-image.png
这样的修改后将先判断数据的有效位数,然后再获取数据,这样就不存在数组越界风险了。
修改有无其他影响?
原本驱动也考虑到了数据截断的问题,但没有考虑到可能会存在越界到不可访问的区域。这样的修改于原代码相比较,只是调整了接收数据长度的判断位置,所以不会有其他的影响。
此外,原本的判断代码是包裹在一个 if~elseif~else 代码块中,用于区分接收到的消息是Legacy FIFO, Enhanced FIFO, 以及 MB,包裹在这个代码块中,是为了避免接收FIFO消息时不必要的判断,所以可以直接将这部分代码一移出代码块。
这两种修改方式哪种会更好一些?是否均可?
两种方式中,第一种好一点。因为这样只是发生了数据截断,而第二种方式中,会导致 callback 函数中的报文数据是随机的值,debug起来更难理解。