strict_gs_check

Эта прагма позволяет проверить усиленной безопасности.

#pragma strict_gs_check([push,] on ) 
#pragma strict_gs_check([push,] off ) 
#pragma strict_gs_check(pop)

Заметки

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

Необходимо компилировать с параметром /GS (проверкой безопасности буфера) для включения strict_gs_check.

Эта директива pragma в модулях кода, пользователю потенциально вредным данным.Эта прагма очень агрессивна и применяется к функциям, которые могут не этой оборона, но оптимизирована, чтобы свернуть его влияние на производительность получающиеся приложения.

Даже при использовании этой директивы #pragma следует стремиться написание защищенного программного кода.То есть, убедитесь, что в коде нет переполнения буфера.strict_gs_check может защитить приложение от переполнение буфера, остаются в коде.

Пример

В следующем коде переполнение буфера возникает, когда мы копируем массив в локальном массиве.При компилировать этот код с /GS, не существует файл cookie не вставлено в стек, поскольку тип данных массива указатель.Добавление pragma strict_gs_check принудительно файл 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

Параметр /GS (проверка безопасности буфера)