strict_gs_check
pragma
To pragma poskytuje rozšířenou kontrolu zabezpečení.
Syntaxe
#pragma strict_gs_check(
[push,
] {on
|off
})
#pragma strict_gs_check( pop )
Poznámky
Dává pokyn kompilátoru k vložení náhodných souborů cookie do zásobníku funkce pro zjištění některých kategorií přetečení vyrovnávací paměti založené na zásobníku. Ve výchozím nastavení /GS
možnost kompilátoru nevkládává soubor cookie pro všechny funkce. Další informace najdete v tématu /GS
(Kontrola zabezpečení vyrovnávací paměti).
Zkompilovat pomocí /GS
povolení strict_gs_check
.
Použijte ho pragma v modulech kódu, které jsou vystaveny potenciálně škodlivým datům. strict_gs_check
je agresivní pragmaa používá se u funkcí, které nemusí tuto obranu potřebovat, ale je optimalizované tak, aby minimalizovala její účinek na výkon výsledné aplikace.
I když to pragmapoužijete, měli byste se snažit psát zabezpečený kód. To znamená, že kód nemá přetečení vyrovnávací paměti. strict_gs_check
může chránit vaši aplikaci před přetečením vyrovnávací paměti, která zůstávají v kódu.
Příklad
V této ukázce dojde k přetečení vyrovnávací paměti při kopírování pole do místního pole. Při kompilaci tohoto kódu bez /GS
souboru cookie se vloží do zásobníku, protože datový typ pole je ukazatel. Přidání vynutí strict_gs_check
pragma soubor cookie zásobníku do zásobníku funkcí.
// 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;
}
Viz také
Pragma direktivy a __pragma
_Pragma
klíčová slova
/GS
(Kontrola zabezpečení vyrovnávací paměti)