Bug in String::copy, out of bounds crash
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 48/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 停滞
- 技术栈
- cpp
- 领域
- embedded-iot
调研方向
从 cores/esp8266/WString.cpp 第 280-291 行附近开始,检查 String::copy 以及 setLen 和 reserve。在会触发分配边界的字符串长度下重现崩溃,然后验证终止 null 字符始终位于已分配的数组内,并且不会发生越界访问。
由索引模型根据 Issue 内容生成。
描述
Basic Infos
- This issue complies with the issue POLICY doc.
- I have read the documentation at readthedocs and the issue is not addressed there.
- I have tested that the issue is present in current master branch (aka latest git).
- I have searched the issue tracker for a similar issue.
- If there is a stack dump, I have decoded it.
- I have filled out all fields below.
Problem Description
See line 291 (and line 280):
When allocating an array of N elements, accessing element [N] is out of bounds.
This only happens sometimes at very specific string lengths, as setLen only allocates in multiples of N bytes.
N.B. similar issue for ESP32, so I will also add an issue there.
Suggested fix:
reserve(length + 1);
N.B. This function is likely to be called with strlen() or strlen_P() as argument, which does not include the ending null character.
- 主要语言
- C++
- 星标
- 16.7k
- 派生
- 13.1k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
esp8266/Arduino 的其他 Issue
-
Typo in Scan Class Documentation可能已有人在做 @MukundaKatta 于 188 天前认领。 未关闭
难度 1/5 1 小时以内 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 62/100
-
lwip2 time-wait.patch: TCP_TW_LIMIT can abort the pcb that tcp_process() is still handling -> double free, heap corruption可能已有人在做 @scardus 于 21 天前认领。 未关闭
难度 4/5 3-5 天 新手友好度 52/100
-
难度 3/5 1-2 天 新手友好度 65/100
-
难度 4/5 3-5 天 新手友好度 42/100
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
scp-fs2open/fs2open.github.com#7914 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
eclipse-score/inc_someip_gateway#356 ·
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
HarperFast/rocksdb-js#945 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复