c - gcc -fstack-protector 不抛出错误
问题描述
有人知道为什么以下代码行会抛出 *** stack smashing detected *** 错误
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char x[16];
strcpy(x,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
但是下面的代码不会抛出吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char x[16];
x[17] = 'a';
}
谢谢!!
解决方案
覆盖x[17]
不会覆盖gcc 在返回地址之前放置的canary值。
推荐阅读
- php - 语言外观未检测到应用程序语言更改
- javascript - 反应材料ui文本字段(类型=数字)验证10个字符是否存在
- php - 自定义帖子类型 wordpress 的热门帖子
- regex - 通过 .htaccess 重定向我的旧网址不起作用
- asp.net-core - 如何使用 Sustainsys Saml2 从 Idp 发起的登录中检索声明?
- mysql - 如何使用 sql 或 eloquent 使用 group by 和 joins?
- css-animations - 将 Clippath CSS 关键帧动画转置为animejs 动画
- processing - 加工——倒车翻跟头
- javascript - 下拉禁用功能无法正常工作
- c - 如何使用 GCC 编译器和带有 -o 的 .o 文件正确编译多个文件?