Compartilhar via


strict_gs_check

Este pragma fornece verificação de segurança avançada.

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

Comentários

Instrui o compilador para inserir um cookie aleatório na pilha de função para ajudar a detectar algumas categorias estouro de pilha baseado em buffer.Por padrão, a opção de compilador /GS (verificação de segurança do buffer) não insere um cookie para todas as funções.Para obter mais informações, consulte /GS (verificação de segurança de buffer).

Você deve compilar com /GS (verificação de segurança do buffer) para ativar o strict_gs_check.

Use este pragma em módulos de código que são expostos a dados potencialmente prejudiciais.Este pragma é muito agressivo, e é aplicada às funções que não podem precisar essa proteção, mas otimizado para minimizar o efeito no desempenho do aplicativo resultante.

Mesmo se você usar esse pragma, você deve esforçar-se para escrever código seguro.Isto é, certifique-se de que seu código não tem nenhuma estouro de buffer.o strict_gs_check pode proteger seu aplicativo de estouros de buffer que permanecem em seu código.

Exemplo

No código a seguir um estouro de buffer ocorre quando nós copiamos uma matriz para uma matriz local.Quando você compilar este código com /GS, nenhum cookie é inserido na pilha, como o tipo de dados de matriz é um ponteiro.Adicionando o pragma de strict_gs_check força o cookie de pilha na pilha de função.

// 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;
}

Consulte também

Referência

Diretivas pragma e __Pragma palavra-chave

/GS (verificação de segurança de buffer)