Partager via


strict_gs_check

Ce pragma fournit le contrôle de sécurité renforcée.

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

Notes

Demande au compilateur d'insérer un cookie aléatoire dans la pile de fonction pour faciliter la détection des catégories de dépassement de mémoire tampon pile- basé.Par défaut, l'option du compilateur /GS (vérification de sécurité de la mémoire tampon) n'insère pas un cookie pour toutes les fonctions.Pour plus d'informations, consultez /GS (Vérification de la sécurité de la mémoire tampon).

Vous devez compiler avec /GS (vérification de sécurité de la mémoire tampon) pour activer le strict_gs_check.

Utilisez le pragma dans les modules de code qui sont exposés aux données potentiellement nuisibles.Ce pragma est très agressif, et est appliqué aux fonctions qui ne peuvent pas avoir besoin de cette défense, mais est optimisé pour réduire son effet sur les performances de l'application obtenue.

Même si vous utilisez le pragma, vous devez tâcher d'écrire du code sécurisé.Autrement dit, assurez-vous que votre code n'a pas de dépassement de mémoire tampon.le strict_gs_check peut protéger votre application contre les dépassements de mémoire tampon qui restent dans votre code.

Exemple

Dans le code suivant un dépassement de mémoire tampon se produit lorsque nous copions un tableau à 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 tableau est un pointeur.Ajout du pragma de strict_gs_check force le cookie de pile dans la pile de fonction.

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

Référence

Directives pragma et le mot clé de __Pragma

/GS (Vérification de la sécurité de la mémoire tampon)