rt-thread
rt-thread copied to clipboard
[Bug] ymodem中ry_sy.c文件中函数_rym_recv_begin进行传输文件名称拷贝赋值时,存在内存泄露,导致最后释放内存的时候进入断言错误
RT-Thread Version
5.10
Hardware Type/Architectures
GD32F470ZG
Develop Toolchain
GCC
Describe the bug
1.文件路径名称大小拷贝是根据ymodem协议数据包大小进行拷贝,但是保存文件名称buffer大小是根据dfs中文件路径名称长度的宏定义,如果文件路径名称的宏定义大小小于ymodem协议数据包大小就会导致内存泄露。 2.将函数中rt_strncpy(ret+1,(const char*)buf, len-1)修改为rt_strncpy(ret+1,(const char*)buf, sizeof(cctx->fpath)-1)就不会存在问题
Other additional context
No response
导致内存泄露,有更具体的说明吗?文件路径名称的宏定义大小小于ymodem协议数据包大小是指ymodem协议传输的文件名超过了DFS_FILE_MAX的宏定义吗
导致内存泄露,有更具体的说明吗? 我这边用的是小内存管理算法,因为内存拷贝的长度有问题,导致内存管理算法中有部分参数被搞乱了,释放内存的时候出现了断言错误。文件路径名称的宏定义大小小于ymodem协议数据包大小是指ymodem协议传输的文件名超过了DFS_FILE_MAX的宏定义吗 那个函数都是作为回调在使用,它使用的时候,入参都是给的1024
导致内存泄露,有更具体的说明吗? 我这边用的是小内存管理算法,因为内存拷贝的长度有问题,导致内存管理算法中有部分参数被搞乱了,释放内存的时候出现了断言错误。文件路径名称的宏定义大小小于ymodem协议数据包大小是指ymodem协议传输的文件名超过了DFS_FILE_MAX的宏定义吗 那个函数都是作为回调在使用,它使用的时候,入参都是给的1024
那能提个pr嘛?顺便提供一个异常的执行结果和流程