strict_gs_check
pragma
Cela pragma fournit une vérification améliorée de la sécurité.
Syntaxe
#pragma strict_gs_check(
[push,
] {on
|off
})
#pragma strict_gs_check( pop )
Notes
Indique au compilateur qu'il faut insérer un cookie aléatoire dans la pile de fonction pour faciliter la détection de certaines catégories de dépassement de mémoire tampon basé sur la pile. Par défaut, l’option du /GS
compilateur n’insère pas de cookie pour toutes les fonctions. Pour plus d’informations, consultez /GS
(Vérification de sécurité de la mémoire tampon).
Compiler à l’aide de l’activation /GS
strict_gs_check
.
Utilisez-le pragma dans les modules de code exposés à des données potentiellement dangereuses. strict_gs_check
est agressif pragmaet est appliqué aux fonctions qui n’ont peut-être pas besoin de cette défense, mais est optimisée pour réduire son effet sur les performances de l’application résultante.
Même si vous utilisez ce code pragma, vous devez vous efforcer d’écrire du code sécurisé. Autrement dit, assurez-vous que votre code n’a pas de dépassement de mémoire tampon. strict_gs_check
peut protéger votre application contre les dépassements de mémoire tampon qui restent dans votre code.
Exemple
Dans cet exemple, un dépassement de mémoire tampon se produit lorsque nous copiez un tableau dans un tableau local. Lorsque vous compilez ce code avec /GS
, aucun cookie n’est inséré dans la pile, car le type de données de tableau est un pointeur. Ajout des forces du strict_gs_check
pragma cookie de pile dans la pile de fonctions.
// 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;
}
Voir aussi
Pragma directives et mots __pragma
_Pragma
clés
/GS
(Contrôle de sécurité de la mémoire tampon)