strict_gs_check
Esta directiva pragma proporciona comprobar mejorado de seguridad.
#pragma strict_gs_check([push,] on )
#pragma strict_gs_check([push,] off )
#pragma strict_gs_check(pop)
Comentarios
Indica al compilador que inserte una cookie aleatoria en la pila de la función para ayudar a detectar algunas categorías de saturación del búfer pila- basada en.De forma predeterminada, la opción del compilador /GS (comprobación de seguridad del búfer) no inserta una cookie para todas las funciones.Para obtener más información, vea /GS (Comprobación de seguridad del búfer).
Debe compilar con /GS (comprobación de seguridad del búfer) para habilitar el strict_gs_check.
Utilice este pragma en módulos que se exponen los datos potencialmente dañinos.Esta directiva pragma es muy agresivo, y se aplica a las funciones que no deban esta defensa, pero se optimiza para minimizar el impacto en el rendimiento de la aplicación resultante.
Incluso si utiliza esta directiva pragma, debe procurar escribir código seguro.Es decir, asegúrese de que el código no tiene una saturación del búfer.el strict_gs_check puede proteger la aplicación de las saturaciones del búfer que permanecen en el código.
Ejemplo
En el código siguiente una saturación del búfer se produce cuando copiamos una matriz a una matriz local.Cuando compila este código con /GS, no se insertará ningún cookie de la pila, porque el tipo de datos de la matriz es un puntero.Agregando el pragma de strict_gs_check fuerza la cookie de la pila de la pila de la función.
// 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;
}