armink / EasyFlash

Lightweight IoT device information storage solution: KV/IAP/LOG. | 轻量级物联网设备信息存储方案:参数存储、在线升级及日志存储 ,全新一代版本请移步至 https://github.com/armink/FlashDB
MIT License
1.99k stars 760 forks source link

log_index2addr 函数存在隐藏风险,建议优化 #146

Closed i-jaffer closed 1 year ago

i-jaffer commented 1 year ago

ef_log.c 文件内的 log_index2addr 函数使用存在隐藏风险,建议可以优化

当给 log_index2addr 传入的参数index 的值 大于 2倍LOG_AREA_SIZE时,回导致计算出来的flash物理地址错误

建议将返回值计算 return log_start_addr + index + header_total_offset - LOG_AREA_SIZE; 修改为 return (log_start_addr + index + header_total_offse)t % LOG_AREA_SIZE;

尽管此函数仅由ef_log_read调用,且ef_log_read函数内做了EF_ASSERT(index < cur_using_size);判断,目前整体是安全的,但是此函数是不安全的,为防止后续其他函数调用是引入风险,建议修改

armink commented 1 year ago

欢迎提交修改的 PR 呢

i-jaffer commented 1 year ago

PR已提交