c - strcpy 的段错误(ELF 可执行文件)

标签 c gcc

我知道程序中有BoF,但是缓冲区没有超出“AA”,那么,为什么我会得到“segmentation failure”?...

$ gcc program.c -o program
$ ./program AA
Segmentation fault

这是来源:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void func(char *arg)
{
    char name[32];
    strcpy(name, arg);
    printf("\nWelcome, %s\n\n", name);
}

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        printf("Use: %s YOUR_NAME\n", argv[0]);
        exit(0);
    }

    func(argv[2]);
    printf("The end\n\n");

    return 0;
}

最佳答案

您取消引用空指针。 argv[argc] 被定义为 NULL

我认为你的意思是 func( argv[1] ); 。 C 中的数组索引从零开始。

关于c - strcpy 的段错误(ELF 可执行文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26208752/

相关文章:

c - LD:将共享库链接到静态库

c++ - 将 GCC 构建为具有多库支持的 ARM 交叉编译器

c++ - 克服rpc字节顺序转换

气隙 Linux 笔记本电脑上的 c 套接字神秘减速

c - 错误 : array type has incomplete element type

gcc - 如何在构建目标之外生成 gcc 调试符号?

c++ - 当我一步编译所有内容时,GCC 能否优化得更好?

c++ - 将 GL_TRIANGLE_STRIP 显示为线框

c - 查找和打印两个给定长整数共有的数字的算法

c - 体系结构 x86_64 和链接器命令的 undefined symbol 失败,退出代码为 1