缓冲区大小被硬编码
内存缓冲区的大小是一个数值,而不是符号常量。
描述
当您在声明数组等内存缓冲区时,使用数字值代替符号常量时,会发生此缺陷。
风险
硬编码的缓冲区大小会导致以下问题:
硬编码的缓冲区大小会增加出错的可能性,从而导致维护成本上升。如果政策变更要求开发人员修改缓冲区大小,他们必须在代码中修改所有缓冲区大小的实例。
硬编码常量在代码被泄露时可能面临安全风险。
修复
使用符号名称代替硬编码常量来指定缓冲区大小。符号名称包括以 const 开头的变量、以 enum 开头的常量或宏。
建议使用 enum 常量。
宏在预处理后被其常量值替换。因此,它们可以暴露循环边界。
enum常量在编译时已知。因此,编译器可以更高效地优化循环。const-合格变量通常在运行时已知。
示例
结果信息
| 组:良好做法 |
| 语言:C | C++ |
| 默认值:关闭 |
命令行语法:HARD_CODED_BUFFER_SIZE |
| 影响:低 |
版本历史记录
在 R2015b 中推出
另请参阅
主题
- 解释 Polyspace 桌面端用户界面中的 Bug Finder 结果
- 解释 Polyspace Access Web 界面中的 Bug Finder 结果 (Polyspace Access)
- 通过 Bug 修复或申述在 Polyspace 用户界面中处理结果
- 通过 Bug 修复或申述在 Polyspace Access 中处理结果 (Polyspace Access)