AddressSanitizer:堆缓冲区溢出

时间:2018-02-05 04:27:04

标签: c pointers function-pointers

我有一个结构:

struct server
{
    ssize_t (*handler)(char *, void*);
};
typedef struct server server;

在另一个函数中,我按如下方式分配函数指针,

void setHandler(server *s, ssize_t (*handler)(char *, void*)){
    s->handler = handler;
}

并调用函数指针

void perform(server *s){
    .
    .
    (s->handler)(path, NULL);
    .
    .
}

但是我收到以下AddressSanitizer错误,

AddressSanitizer: heap-buffer-overflow on address 0x60200000eff8 at pc 0x0000004b111e bp 0x7fffd76687e0 sp 0x7fffd76687d0\nWRITE of size 8 at 0x60200000eff8 thread T0\n    #0 0x4b111d in setHandler /home/vmuser_xghkzivu/workspace/server_main.c:179\n 

我的代码似乎与我提到的所有其他示例一致,但我不确定我在这里做错了什么。

0 个答案:

没有答案