gpt4 book ai didi

linux - "-fstack-protector"和 "FORTIFY"选项有何不同?

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:37 25 4
gpt4 key购买 nike

这些天我正在寻找安全编码指南,并且有一个选项可以防止

缓冲区溢出。

一个,

$gcc -fstack-protector -S test.c
$cat test.s

两个,

$gcc -O -D_FORTIFY_SOURCE=1 test.c

我可以从 FORTIFY 选项中看到缓冲区溢出的警告,但实际上我对 -fstack-protector 选项不太了解。

它们是完全不同的并且没有任何防止缓冲区溢出的作用吗?

最佳答案

-fstack-protector 基本上创建了所谓的金丝雀 - 放置在堆栈中的虚拟变量。函数退出时,将检查变量。如果被覆盖,程序将退出并显示错误消息。

_FORTIFY_SOURCE 编译时定义是在打开优化时检查代码是否违反标准的定义。因此,您会在编译时收到错误,而不是像使用 -fstack-protector 那样在运行时收到错误。

_FORTIFY_SOURCE=1 当优化设置为 1 级或更高级别时打开此功能。

关于linux - "-fstack-protector"和 "FORTIFY"选项有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27117437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com