字符串操作中目标缓冲区下溢
函数从缓冲区起始位置的负偏移处写入缓冲区
描述
当某些字符串操作函数以缓冲区开头的负偏移量写入其目标缓冲区参量时,会出现此缺陷。
例如,对于函数 sprintf(char* buffer, const char* format),您可以从运算 buffer = (char*)arr; ... buffer += offset; 中获得 buffer。arr 是一个数组,offset 是一个负值。
风险
缓冲区下溢可能导致意外行为,例如内存损坏或停止系统。缓冲区下溢还会引入了代码注入的风险。
修复
如果目标缓冲区参量来自指针算术,请查看您是否正在递减指针。通过修改递减前的原始值或递减值来修复指针递减。
示例
结果信息
| 组:静态内存 |
| 语言:C | C++ |
| 默认值:手写代码时为启动,生成代码时为关闭 |
命令行语法:STRLIB_BUFFER_UNDERFLOW |
| 影响:高 |
版本历史记录
在 R2015b 中推出
另请参阅
查找缺陷 (-checkers) | 字符串操作中目标缓冲区上溢
主题
- 解释 Polyspace 桌面端用户界面中的 Bug Finder 结果
- 解释 Polyspace Access Web 界面中的 Bug Finder 结果 (Polyspace Access)
- 通过 Bug 修复或申述在 Polyspace 用户界面中处理结果
- 通过 Bug 修复或申述在 Polyspace Access 中处理结果 (Polyspace Access)