У меня есть следующая простая программа
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.
Я не могу понять, почему это ошибка. Есть объяснения? Заранее спасибо.