帧-c : how to assume malloc succeeds?

标签 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

我不想得到“越界写入” 我怎样才能做到这一点?

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

最佳答案

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

我们已经实现了一种新的、合理的(正确的)且足够易懂的模型化。不过,它只能与 Frama-C Silicium 一起使用,将于 2016 年 10 月或 11 月发布。

关于帧-c : how to assume malloc succeeds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36721578/

相关文章:

c - 为什么 frama-c 会对此产生语法错误?

frama-c - Frama-C 是否处理无限循环?

ocaml - 在值分析中获取数组索引变量及其值(Frama-C)

smt - Why3 中的 [ <- ] 是什么意思?

Frama-C 选项 -no-simplify-cfg 不起作用

c - frama-c值分析自动加宽

使用 Frama-C 检查 C 代码是否存在无效内存访问

static-analysis - 是否可以在frama-c值分析器中注入(inject)值?

无法使用 frama-c 分析 openmp 代码