NUC505_Series_BSP_CMSIS_V3.03.001/SampleCode/USBD_VCOM_SerialEmulator
vcom_serial.c 中有下列定义
#define EPA_MAX_PKT_SIZE 512
uint8_t gRxBuf[64] = {0};
if(i32Len > EPA_MAX_PKT_SIZE)
i32Len = EPA_MAX_PKT_SIZE;
for(i=0; i<i32Len; i++) {
gRxBuf[i] = comRbuf[comRhead++];
if(comRhead >= RXBUFSIZE)
comRhead = 0;
}
由于gRxBuf的大小只有64字节,而赋值循环的最大值是512,这样就可能会导致写越界。
我是在发送较大数据包时发现这个Bug的,改正方法是:
将 uint8_t gRxBuf[64] = {0};
改为 uint8_t gRxBuf[EPA_MAX_PKT_SIZE] = {0}; |