gpt4 book ai didi

c - 堆缓冲区溢出——这是地址清理程序的误报吗?

转载 作者:行者123 更新时间:2023-11-30 18:33:16 24 4
gpt4 key购买 nike

我有以下简单的程序

void copy(const int16_t *buffer) {
int16_t *b;
memcpy(b,buffer,2);
return ;
}


int LLVMFuzzerTestOneInput(const int16_t *buffer) {
copy(buffer);
return 0;
}

我使用 clang (v9) 使用地址清理器和模糊器标志进行编译,如下所示

clang -fsanitize=address,fuzzer -g test5.c

当我运行生成的可执行文件时,模糊器发现由于无效读取而导致堆缓冲区溢出 - 特别是在尝试复制 memcpy 中的第二个字节时。

我真的无法理解为什么这是一个错误。有什么解释吗?预先感谢您。

最佳答案

由于当您memcpyb未初始化,因此您正在调用未定义的行为。从字面上看,“您想将该数据复制到哪里?”

sanitizer 是正确的,指出这个问题对你来说是一个很大的帮助。

复制函数的用途是什么?

关于c - 堆缓冲区溢出——这是地址清理程序的误报吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772060/

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