/sdl (activer des contrôles de sécurité supplémentaires)
Ajoute les vérifications SDL (Security Development Lifecycle) recommandées. Ces vérifications incluent des avertissements supplémentaires relatifs à la sécurité en tant qu'erreurs, ainsi que des fonctionnalités de génération de code sécurisé supplémentaires.
/sdl[-]
Notes
/sdl active un sur-ensemble des vérifications de sécurité de base fourni par /GS et remplace /GS-. Par défaut, /sdl est désactivé. /sdl- désactive les vérifications de sécurité supplémentaires.
Vérifications au moment de la compilation
/sdl active les avertissements suivants en tant qu'erreurs :
Avertissement activé par /sdl |
Commutateur de ligne de commande équivalent |
Description |
---|---|---|
/we4146 |
Un opérateur moins unaire a été appliqué à un type non signé, ce qui génère un résultat non signé. |
|
/we4308 |
Une constante intégrale négative a été convertie en type non signé, générant éventuellement un résultat sans signification. |
|
/we4532 |
L'utilisation des mots clés continue, break ou goto dans un bloc __finally/finally a un comportement indéfini lors d'un arrêt anormal. |
|
/we4533 |
Le code d'initialisation d'une variable ne sera pas exécuté. |
|
/we4700 |
Utilisation d'une variable locale non initialisée. |
|
/we4703 |
Utilisation d'une variable de pointeur locale potentiellement non initialisée. |
|
/we4789 |
Dépassement de mémoire tampon quand des fonctions CRT (Runtime C) spécifiques sont utilisées. |
|
/we4995 |
Utilisation d'une fonction marquée avec pragma deprecated. |
|
/we4996 |
Utilisation d'une fonction marquée comme deprecated. |
Vérifications au moment de l'exécution
Quand /sdl est activé, le compilateur génère du code pour effectuer ces vérifications au moment de l'exécution :
Active le mode strict de détection de dépassement de mémoire tampon à l'exécution /GS, équivalent à la compilation avec #pragma strict_gs_check(push, on).
Effectue un assainissement de pointeur limité. Dans les expressions qui n'impliquent pas de déréférencements et dans les types qui n'ont aucun destructeur défini par l'utilisateur, les références de pointeur sont définies sur une adresse non valide après un appel à delete. Cela contribue à empêcher la réutilisation de références périmées de pointeur.
Effectue l'initialisation des membres de classe. Initialise automatiquement tous les membres de classe à zéro lors de l'instanciation d'objet (avant l'exécution du constructeur). Cela contribue à éviter l'utilisation de données non initialisées associées aux membres de classe que le constructeur n'initialise pas explicitement.
Remarques
Pour plus d’informations, consultez Avertissements, /sdl et amélioration de la détection des variables non initialisées.
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, voir Comment : ouvrir les pages de propriétés d'un projet.
Sélectionnez le dossier C/C++.
Dans la page Général, sélectionnez l'option à partir de la liste déroulante Vérifications SDL.