Я пытаюсь использовать функцию allow_user_poisoning
AddressSanitizer. Вот простой репродуктор:
#include <stdlib.h>
#include <stdio.h>
void __asan_poison_memory_region(void *p, int n);
void unit_test_2(void)
{
int *p;
p = (int *)malloc(sizeof(int));
__asan_poison_memory_region(p, sizeof(int));
*p = 1;
printf("%p:%d\n", p, *p);
return;
}
В журнале отладки ASAN указано
==32232==AddressSanitizer Init done
Trying to poison memory region [0x00000147a040, 0x00000147a044)
0x147a040:1
ASAN пытался отравить память, но защита не работала: данные были ошибочно записаны на отравленный адрес вместо сообщения о недопустимом доступе.
Я неправильно понял __asan_poison_memory_region
или что-то упустил?