c – 这真的是缓冲区溢出吗?

c – 这真的是缓冲区溢出吗?,第1张

概述我们使用的静态分析工具将类似于以下内容的C代码标记为关键缓冲区溢出. #define size 64char buf [size + 1] = "";memset (buf, 0, size + 1); 该工具的错误消息是:缓冲区溢出(数组索引超出界限):数组’buf’大小为1.数组’buf’可能使用0..64索引. 这合法吗?将字符数组赋值给空字符串是否真的导致其长度减少为单个字节,就好像 我们使用的静态分析工具将类似于以下内容的C代码标记为关键缓冲区溢出.

#define size 64char  buf [size + 1] = "";memset (buf,size + 1);

该工具的错误消息是:缓冲区溢出(数组索引超出界限):数组’buf’大小为1.数组’buf’可能使用0..64索引.

这合法吗?将字符数组赋值给空字符串是否真的导致其长度减少为单个字节,就好像它被定义为char buf [] =“”;?

解决方法 将“”分配给buf [size 1]不会重置buf的大小,但它没有意义,因为它复制了后续memset所做的一小部分(并且它会混淆你的静态分析工具 – 你可能想要提交一个针对它的错误报告). 总结

以上是内存溢出为你收集整理的c – 这真的是缓冲区溢出吗?全部内容,希望文章能够帮你解决c – 这真的是缓冲区溢出吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存