Поделиться через


__security_init_cookie

Инициализирует глобальный cookie-файл безопасности.

Синтаксис

void __security_init_cookie(void);

Замечания

Глобальный cookie-файл безопасности используется для защиты от переполнения буфера в коде, скомпилированном с параметром /GS (проверка безопасности буфера), и в коде, в котором используется структурная обработка исключений. При входе в функцию с защитой от переполнения cookie-файл помещается в стек, а при выходе значение в стеке сравнивается с глобальным cookie-файлом. Любое различие между ними указывает, что произошло переполнение буфера, что приводит к немедленному завершению работы программы.

Как правило, __security_init_cookie вызывается CRT при инициализации. Если обойти инициализацию CRT , например, если вы используете /ENTRY для указания точки входа, необходимо вызвать __security_init_cookie себя. Если __security_init_cookie не вызывается, глобальный файл cookie безопасности имеет значение по умолчанию, а защита от переполнения буфера скомпрометирована. Злоумышленник может воспользоваться этим значением cookie-файла по умолчанию, чтобы обойти проверку переполнения буфера, поэтому рекомендуется всегда вызывать __security_init_cookie при определении собственной точки входа.

Функцию __security_init_cookie необходимо вызывать до входа в любую функцию, защищенную от переполнения; в противном случае будет обнаружено ложное переполнение буфера. Подробнее: Ошибка R6035 времени выполнения C.

Пример

Примеры см. в разделе Ошибка R6035 времени выполнения C.

Требования

Маршрут Обязательный заголовок
__security_init_cookie <process.h>

__security_init_cookie — расширение Майкрософт для стандартной библиотеки выполнения C. Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Центр Майкрософт по реагированию на угрозы