【发布时间】:2009-02-16 15:36:48
【问题描述】:
我们使用的静态分析工具将类似于以下的 C 代码标记为严重缓冲区溢出。
#define size 64
char buf [size + 1] = "";
memset (buf, 0, size + 1);
工具的错误信息是:Buffer Overflow (Array Index Out of Bounds): The array 'buf' size is 1. Array 'buf' may use the 0..64 index.
这是合法的吗?将字符数组赋值给空字符串真的会导致它的长度减少到一个字节,就好像它被定义为char buf [] = "";?
【问题讨论】:
-
显然它会在 C99 中出现。我的错。 :)
-
你应该从
size的定义中删除分号。
标签: c static-analysis buffer-overflow string-literals