Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это pragma обеспечивает расширенную проверку безопасности.
Синтаксис
#pragma strict_gs_check([push,] {on|off})
#pragma strict_gs_check( pop )
Замечания
Заставляет компилятор вставлять случайные объекты cookie в стек функции, помогая обнаруживать некоторые категории переполнения буфера на основе стека. По умолчанию /GS параметр компилятора не вставляет файл cookie для всех функций. Дополнительные сведения см. в разделе /GS (Проверка безопасности буфера).
Компиляция с помощью /GS включения strict_gs_check.
Используйте это pragma в модулях кода, которые подвергаются потенциально вредным данным.
strict_gs_check является агрессивным pragmaи применяется к функциям, которые могут не нуждаться в этой защите, но оптимизированы для минимизации его влияния на производительность результирующего приложения.
Даже если вы используете это pragma, следует стремиться к написанию защищенного кода. То есть убедитесь, что в коде нет переполнения буфера.
strict_gs_check может защитить приложение от переполнения буфера, которые остаются в коде.
Пример
В этом примере при копировании массива в локальный массив происходит переполнение буфера. При компиляции этого кода /GSбез файла cookie вставляется в стек, так как тип данных массива является указателем.
strict_gs_check
pragma Добавление файла cookie стека в стек функций.
// pragma_strict_gs_check.cpp
// compile with: /c
#pragma strict_gs_check(on)
void ** ReverseArray(void **pData,
size_t cData)
{
// *** This buffer is subject to being overrun!! ***
void *pReversed[20];
// Reverse the array into a temporary buffer
for (size_t j = 0, i = cData; i ; --i, ++j)
// *** Possible buffer overrun!! ***
pReversed[j] = pData[i];
// Copy temporary buffer back into input/output buffer
for (size_t i = 0; i < cData ; ++i)
pData[i] = pReversed[i];
return pData;
}
См. также
директивы Pragma и ключевые слова __pragma и _Pragma
/GS (Проверка безопасности буфера)