小编Xy *_*Luo的帖子

新指针(通过malloc)与其中一个释放/旧指针相同

我试图跟踪C中的使用后免费错误.我的问题是,如果我有这样的代码:

A * ptrA = malloc(sizeof(A));
A * aliasA = ptrA;
// do something ' 
free(ptrA) 
// some other code
B * ptrB = malloc(sizeof(B)); // assume this return same pointer as ptrA
//trying to use aliasA here
Run Code Online (Sandbox Code Playgroud)

只是想知道aliasA的使用是否是UAF错误?如果是的话,这里出了什么问题?

要清除这个问题,我认为最好添加一个小例子:

int main(){
    int *ptr = (int *)malloc(4);
    *ptr = 5;
    int *ptr2 = ptr;
    printf("%d\n", *ptr);
    free(ptr);

    int *new_ptr = malloc(4);
    *new_ptr = 66;
    printf("%d\n", *ptr2);

    return 0;
}  
Run Code Online (Sandbox Code Playgroud)

输出是:

5
66
Run Code Online (Sandbox Code Playgroud)

(我检查ptr,并new_ptr在S2E:http://s2e.systems/这两个指针实际上指向同一个地址释放PTR后,同一地址分配给new_ptr.)

从上面的输出,似乎使用 …

c pointers heap-memory

5
推荐指数
1
解决办法
321
查看次数

如果从未使用悬挂指针危险吗?

我们已经知道免费使用后漏洞可能会导致安全问题.由于免费使用后错误是由悬空指针产生的,我的问题是如果悬挂指针没有在程序中使用,它们被认为是安全的还是良性的(不是那么危险)?

c dangling-pointer

3
推荐指数
1
解决办法
407
查看次数

标签 统计

c ×2

dangling-pointer ×1

heap-memory ×1

pointers ×1