Megosztás:


strict_gs_check pragma

Ez a pragma továbbfejlesztett biztonsági ellenőrzést biztosít.

Szintaxis

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

Megjegyzések

Utasítja a fordítót, hogy szúrjon be egy véletlenszerű cookie-t a függvényverembe a veremalapú puffertúllépés bizonyos kategóriáinak észleléséhez. Alapértelmezés szerint a /GS fordítóbeállítás nem szúr be cookie-t az összes függvényhez. További információ: /GS (Puffer biztonsági ellenőrzése).

Fordítás a strict_gs_checkengedélyezéséhez /GS használatával.

Használja ezt a pragma olyan kódmodulokban, amelyek potenciálisan káros adatoknak vannak kitéve. strict_gs_check egy agresszív pragma, és olyan függvényekre van alkalmazva, amelyek esetleg nem igénylik ezt a védelmet, de úgy van optimalizálva, hogy a lehető legkisebb hatással legyen az eredményként kapott alkalmazás teljesítményére.

Akkor is érdemes biztonságos kódot írni, ha ezt a pragmahasználja. Vagyis győződjön meg arról, hogy a kód nem rendelkezik puffertúllépésekkel. strict_gs_check megvédheti az alkalmazást a kódban maradó puffertúlcsordulásoktól.

Példa

Ebben a mintában puffertúlcsordulás történik, amikor tömböt másolunk egy helyi tömbbe. Amikor ezt a kódot /GSfordítja le, a rendszer nem szúr be cookie-t a verembe, mert a tömb adattípusa mutató. A strict_gs_checkpragma hozzáadása kényszeríti a verem cookie-t a függvényverembe.

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

Lásd még:

Pragma irányelvei, valamint a __pragma és _Pragma kulcsszavak
/GS (pufferbiztonsági ellenőrzés)