rt-thread icon indicating copy to clipboard operation
rt-thread copied to clipboard

[Bug] ymodem中ry_sy.c文件中函数_rym_recv_begin进行传输文件名称拷贝赋值时,存在内存泄露,导致最后释放内存的时候进入断言错误

Open xiongsan187 opened this issue 6 months ago • 2 comments

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

xiongsan187 avatar Jun 07 '25 03:06 xiongsan187

  • 导致内存泄露,有更具体的说明吗?
  • 文件路径名称的宏定义大小小于ymodem协议数据包大小是指ymodem协议传输的文件名超过了DFS_FILE_MAX的宏定义吗

wdfk-prog avatar Jun 13 '25 13:06 wdfk-prog

  • 导致内存泄露,有更具体的说明吗? 我这边用的是小内存管理算法,因为内存拷贝的长度有问题,导致内存管理算法中有部分参数被搞乱了,释放内存的时候出现了断言错误。
  • 文件路径名称的宏定义大小小于ymodem协议数据包大小是指ymodem协议传输的文件名超过了DFS_FILE_MAX的宏定义吗 那个函数都是作为回调在使用,它使用的时候,入参都是给的1024

xiongsan187 avatar Jun 16 '25 09:06 xiongsan187

  • 导致内存泄露,有更具体的说明吗? 我这边用的是小内存管理算法,因为内存拷贝的长度有问题,导致内存管理算法中有部分参数被搞乱了,释放内存的时候出现了断言错误。
  • 文件路径名称的宏定义大小小于ymodem协议数据包大小是指ymodem协议传输的文件名超过了DFS_FILE_MAX的宏定义吗 那个函数都是作为回调在使用,它使用的时候,入参都是给的1024

那能提个pr嘛?顺便提供一个异常的执行结果和流程

wdfk-prog avatar Jun 16 '25 14:06 wdfk-prog