首页 > 解决方案 > 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';
}

谢谢!!

标签: cgccstack-overflowstack-smash

解决方案


覆盖x[17]不会覆盖gcc 在返回地址之前放置的canary值。


推荐阅读