Bug: Undefined behavior in param::hstring(std::wstring_view
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 52/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- cpp
调研方向
从接收 std::wstring_view 的 param::hstring 构造函数开始,跟踪它对 impl::create_hstring_on_stack() 的调用,在那里可以看到越界访问。复现 issue 中描述的固定大小缓冲区案例,然后验证构造函数不再读取 view 之外的内容,并为未以 null 结尾的输入添加回归测试覆盖。
由索引模型根据 Issue 内容生成。
描述
Version
v2.0.250303.1
Summary
The param::hstring constructor that takes a std::wstring_view involves undefined behavior.
A std::wstring_view is not guaranteed to be null-terminated. If it's constructed from a fixed-size buffer, the code from impl::create_hstring_on_stack() will result in UB due to out-of-bounds access:
if (value[length] != 0)
{
abort();
}
In most cases, value[length] will cause a segmentation fault, without reaching the abort() call.
Reproducible example
Expected behavior
No response
Actual behavior
No response
Additional comments
No response
- 主要语言
- C++
- 星标
- 1.9k
- 派生
- 281
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/cppwinrt 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 1/5 1 小时以内 新手友好度 20/100
-
难度 5/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 48/100
-
难度 4/5 3-5 天 新手友好度 30/100
查看 microsoft/cppwinrt 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
难度 2/5 1-3 小时 新手友好度 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 65/100
brave/brave-browser#59300 ·
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main 未关闭ai_reviewed
难度 2/5 1-3 小时 新手友好度 70/100
ydb-platform/ydb#53974 · 3 条评论 ·