В замечаниях к текущей версии FreeBSD-CURRENT приводится информация об улучшении безопасности работы с памятью на уровне ядра, реализованном Pawel Jakub Dawidek (pjd@FreeBSD.org) под названием RedZone, предназначенном для защиты буфера от повреждения при выделении/освобождении памяти во время вызова malloc(9).
RedZone распознает ошибки переполнения буфера "сверху" и "снизу" времени выполнения (через опосредованный вызов readzone_check() до момента фактической манипуляции с ресурсами в free(9) и realloc(9)) и печатает отладочную информацию об адресах выделения и освобождения затронутой памяти вида:
REDZONE: Buffer underflow detected. 2 bytes corrupted before 0xc8688580 (16 bytes allocated).
Поведение системы по умолчанию - печать отладочной информации без вызова паники ядра (redzone_check() смотрит на настраиваемое sysctl(8)-значение vm.redzone.panic). Работает в ядре, собранном в режиме отладки.
|