cppcheck 报告“缓冲区访问越界”

Posted

技术标签:

【中文标题】cppcheck 报告“缓冲区访问越界”【英文标题】:"The buffer is accessed out of bounds" is reported by cppcheck 【发布时间】:2014-09-12 13:01:35 【问题描述】:

静态代码分析工具cppcheck在下面的代码中报了一个严重的错误:我不知道是什么问题。

      #define NUM_UPDATE_COUNT 3
      #define MAX_NUM_CH_1LINE 27

      wchar_t m_cCnt_Buf[NUM_UPDATE_COUNT][MAX_NUM_CH_1LINE];

      Init_PushPt();

      memset((char *)&m_cCnt_Buf[1], 0x20, sizeof(m_cCnt_Buf[1])); /* Buffer is accessed out of bounds: m_cCnt_Buf */
      memset((char *)&m_cCnt_Buf[2], 0x20, sizeof(m_cCnt_Buf[2])); /* Buffer is accessed out of bounds: m_cCnt_Buf */               
      m_cCnt_Buf[1][2] = '0';
      m_cCnt_Buf[2][8] = '0';

上面的代码似乎没有任何问题。任何想法为什么这些被捡起以及如何解决这个问题?提前谢谢你。

【问题讨论】:

【参考方案1】:

我是一名 Cppcheck 开发人员。

有趣。对我来说它看起来像一个FP。但是我无法使用 Cppcheck 重现此 FP。

【讨论】:

您可以报告您在 Cppcheck 问题跟踪器 (trac.cppcheck.net) 中看到的任何 Cppcheck-FP,修复 FP 报告是高优先级。报告中应包含重现 FP 的最小代码示例。

以上是关于cppcheck 报告“缓冲区访问越界”的主要内容,如果未能解决你的问题,请参考以下文章

cppcheck : 缓冲区被越界访问

发布“永久”cppcheck 报告

缓冲区在 cppcheck 中被越界访问

cppcheck 报告误报

c ++社区管理器声纳插件无法解析cppcheck报告

CppCheck 在调用时使用 -I 的 headerfolders 报告的错误更少,然后没有