You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Coverity抛出overrun-buffer-arg缓冲区溢出错误如何修复?

Coverity overrun-buffer-arg 报错修复方案

错误根因

该报错属于典型的缓冲区越界风险:

key_name是总容量仅256字节的字符数组,代码从偏移len的地址key_name + len开始写入数据,却仍然指定256作为最大写入长度。当len > 0时,写入的最高地址key_name + len + 255必然超出key_name的合法访问范围key_name ~ key_name + 255,触发内存越界风险。

修复步骤

  • 先校验len的合法性,避免key_name + len本身已经超出缓冲区边界
  • 将snprintf的第二个参数替换为缓冲区剩余可用长度,即总容量减去已偏移的len值

修复后代码示例

/* 校验len合法性,可根据业务逻辑自定义错误处理分支 */
if (len >= sizeof(key_name)) {
    // 此处可添加报错、重置len等业务处理逻辑
    return -1;
}
/* 传入剩余可用长度作为snprintf的最大写入字节限制 */
snprintf(key_name + len, sizeof(key_name) - len, "%s", student->name);

额外优化说明

使用sizeof(key_name)替代硬编码的256,后续如果调整key_name的数组长度,无需修改对应逻辑,代码鲁棒性更强。

内容的提问来源于stack exchange,提问作者sanky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:03