Sdílet prostřednictvím


strict_gs_check

Této pragma poskytuje kontrolu rozšířeného zabezpečení.

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

Poznámky

Pokyn kompilátoru k vložení náhodných souboru cookie v 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 (vyrovnávací paměti Security Check) /GS možnosti kompilátoru k vložení souboru cookie pro všechny funkce.Další informace naleznete v tématu /GS (Kontrola zabezpečení vyrovnávací paměti).

Je nutné kompilovat s /GS (vyrovnávací paměti Security Check) Chcete-li povolit strict_gs_check.

Pomocí této pragma moduly kódu, které jsou vystaveny na potenciálně nebezpečné data.Této pragma je velmi agresivní a je použita funkce, které pravděpodobně nebudete potřebovat tato obrana, ale je optimalizována pro minimalizaci jejího vlivu na výkon výsledné aplikace.

I v případě, že použití této pragma, měly by usilovat o psaní bezpečného kódu.To znamená Ujistěte se, že váš kód obsahuje žádné chyby přetečení vyrovnávací paměti.strict_gs_check může zabránit chyby přetečení vyrovnávací paměti, které zůstávají ve vašem kódu vaší aplikace.

Příklad

Následující kód přetečení vyrovnávací paměti dojde, když jsme kopírování pole místní pole.Při kompilaci tohoto kódu se /GS žádný soubor cookie je vložena do zásobníku, protože datový typ pole je ukazatel.Přidání záhlaví pragma strict_gs_check vynutí cookie zásobníku do zásobníku funkce.

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

Referenční dokumentace

Pragma směrnic a __Pragma klíčové slovo

/GS (Kontrola zabezpečení vyrovnávací paměti)