fix(ioctl): _IOR() overflows in switch (int)
#10650
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
_IOR()宏会扩展到 0x8xxxxxxx,这个数字超过了int的表示范围。在 switch 语句里,使用相关宏(如FIONREAD、FIONWRITE等)会产生数据溢出。这在 clang 下会产生overflow converting case value to switch condition typewarning,存在潜在风险。在 RT-Thread 代码中,已有部分代码使用了long或unsigned类型规避这一问题,这个 PR 是为了解决尚未规避的部分。你的解决方案是什么 (what is your solution)
在
switch语句中,使用强制类型转换,将 switch 变量转换成unsigned类型后再进行case判断。请提供验证的bsp和config (provide the config and bsp)
基于 virt riscv bsp 进行测试,但修改了部分代码以适配 clang 编译,相关修改如下。
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up