frama-c:如何假设malloc成功?

时间:2016-04-19 14:37:10

标签: frama-c

我想分析我的程序,假设malloc成功返回一个已分配的缓冲区。

当我使用命令

运行值插件时
/Users/philippeantoine/.opam/4.02.3/bin/frama-c -val testalloc.c

这个简单的程序:

#include <stdlib.h>
int main (){
    char * test = malloc(10);
    test[0] = 'a';
}

我得到以下输出:

[value] computing for function malloc <- main.
    Called from testalloc.c:4.
[value] using specification for function malloc
[value] Done for function malloc
testalloc.c:5:[kernel] warning: out of bounds write. assert \valid(test+0);
[value] Recording results for main
[value] done for function main

我不想让#34;越界写出&#34; 我怎么能这样做?

PS:我试图在stdlib.h中更改malloc规范,但没有成功

1 个答案:

答案 0 :(得分:2)

不幸的是,在当前开源版本的Frama-C(在Value插件中)中没有令人满意的malloc实现。 stdlib.c中以前可用的版本都有缺点。由于这个原因,他们已被部分删除。

我们已经实现了一个新的,合理的(正确的)和足够可理解的模型化。但是,它只适用于2016年10月或11月发布的Frama-C Silicium。