safebuffers
Programu Microsoft
Nakazuje kompilatorowi nie wstawić kontroli zabezpieczeń przekroczenie buforu dla funkcji.
__declspec( safebuffers )
Uwagi
/GS Opcję kompilatora powoduje, że kompilator do testowania przekroczenia buforu wstawiając kontroli zabezpieczeń na stosie.Rodzaje struktur danych, które kwalifikują się do kontroli bezpieczeństwa są opisane w / GS (kontrola zabezpieczeń buforu).Aby uzyskać więcej informacji na temat wykrywania przepełnienia buforu, zobacz Kompilatora zabezpieczeń sprawdza, czy w głębi w witrynie MSDN w sieci Web.
Przeglądu ekspertów ręczne kodu lub analiza zewnętrznych może określić, że funkcja jest bezpieczne z przepełnienie buforu.W takim przypadku można pominąć sprawdzanie zabezpieczeń dla funkcji, stosując __declspec(safebuffers) słowa kluczowego do deklaracji funkcji.
Przestroga |
---|
Kontrola zabezpieczeń buforu zapewniają ochronę ważnych funkcji zabezpieczeń i mają znikomy wpływ na wydajność.Dlatego zaleca się, że użytkownik nie Pomijaj je, z wyjątkiem w rzadkich przypadkach, gdy wydajność funkcji odgrywa kluczową rolę i wiadomo, że funkcja bezpieczne. |
Wbudowane funkcje
A podstawową funkcją można użyć inline słowo kluczowe, aby wstawić kopię pomocniczych funkcji.Jeśli __declspec(safebuffers) słowo kluczowe jest stosowane do funkcji, wykrywanie przepełnienia buforu nie jest wyświetlany dla tej funkcji.Jednakże wpływa inline __declspec(safebuffers) słowa kluczowego w następujący sposób.
Załóżmy, że /GS dla obu funkcji określono opcję kompilatora, ale podstawową funkcją określa __declspec(safebuffers) słowa kluczowego.Struktur danych w funkcji pomocniczego upewnij kwalifikujących się do kontroli zabezpieczeń i funkcji nie odrzuca tych kontroli.W tym przypadku:
Określ __forceinline słowa kluczowego na pomocniczym funkcji, aby wymusić na kompilatorze wbudowane, które działają niezależnie od optymalizacje kompilatora.
Ponieważ funkcja drugorzędna kwalifikuje się do kontroli bezpieczeństwa, kontroli zabezpieczeń są także stosowane do podstawową funkcją nawet określa __declspec(safebuffers) słowa kluczowego.
Przykład
Poniższy kod pokazuje, jak używać __declspec(safebuffers) słowa kluczowego.
// compile with: /c /GS
typedef struct {
int x[20];
} BUFFER;
static int checkBuffers() {
BUFFER cb;
// Use the buffer...
return 0;
};
static __declspec(safebuffers)
int noCheckBuffers() {
BUFFER ncb;
// Use the buffer...
return 0;
}
int wmain() {
checkBuffers();
noCheckBuffers();
return 0;
}
KONIEC Microsoft szczególne