GCC中__fortify_function关键字的具体作用是什么?
__fortify_function 的具体作用解释
__fortify_function是GNU C编译器提供的扩展宏,和FORTIFY_SOURCE安全加固机制深度绑定,核心作用是标记需要被安全增强的函数。
当编译时开启-D_FORTIFY_SOURCE=1或-D_FORTIFY_SOURCE=2选项后,编译器会对标记了该宏的函数做两层安全处理:
- 编译期校验:检查函数调用时的参数合法性,比如格式化字符串和后续参数的类型匹配、缓冲区大小是否足够,发现问题直接抛出警告或错误。
- 运行时替换:将原函数替换为更安全的实现版本,比如针对可变参数的格式化函数,会额外校验参数的合理性,避免出现越界访问、格式串注入这类安全漏洞。
你遇到的DoLog是可变参数的日志输出函数,加上这个宏后,编译器会帮你规避调用时常见的错误——比如用%d传了字符串、格式串参数数量不匹配这类问题,同时在运行时减少潜在的安全风险。
需要注意的是,这个宏仅在GCC、Clang等兼容GNU扩展的编译器下生效,且必须配合FORTIFY_SOURCE宏使用;如果关闭FORTIFY_SOURCE,这个宏会被直接忽略,函数就是普通的定义。
内容的提问来源于stack exchange,提问作者epilitimus
相关产品推荐
相关产品推荐

