__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. Дополнительные сведения о совместимости см. в разделе Совместимость.