0

我正在尝试使用夹板来检测我的代码中的一些错误。更关键的一点是缓冲区溢出检测,似乎夹板无法做到这一点。我试过一个简单的 C 代码

void test()
 {
    int i;
    int a[10]
    for(i=0;i<12;i++)
        a[i]=i;
 }

此代码生成核心转储,但 Splint 日志为空 我使用默认标志运行 splint 关于检测此问题的任何建议?谢谢

4

1 回答 1

0

+bounds 选项解决了我的问题:可能的越界存储:a[i] 无法解决约束:需要 i @test.c:6:11 <= 9 需要满足前提条件:需要 maxSet(a @test.c :6:9) >= i @ test.c:6:11 内存写入可能会写入超出分配缓冲区的地址。(使用 -boundswrite 禁止警告)

附加信息: 夹板 +bounds 运行检查我发现该标志正在检查夹板中的所有可用标志,并在特定帮助中获得更多详细信息:

夹板 --help 标志 alpha 夹板 --help 边界

于 2022-01-20T08:06:39.870 回答