Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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)