Autotest



Qu'est-ce qu'un buffer overflow ?

 Un dépassement de la capacité prévue pour stocker une chaîne

 Une boucle infinie lors de la lecture du buffer

 Une fuite de mémoire lorsqu'on perd le pointeur sur une chaîne



Si je veux pouvoir stocker une chaîne qui ne doit pas dépasser 10 caractères, quelle taille dois-je donner à mon tableau de char ?

 9

 10

 11



Quel pointeur doit-on envoyer à fgets pour qu'elle sache qu'elle doit lire sur l'entrée standard (le clavier) ?

 ptr

 clavier

 stdin



La fonction fgets permet-elle de récupérer un int ?

 Oui

 Non



En résumé


La fonction scanf, bien qu'en apparence simple d'utilisation, est en fait très complexe et nous oppose certaines limites. On ne peut pas, par exemple, écrire plusieurs mots à la fois facilement.

Un buffer overflow survient lorsqu'on dépasse l'espace réservé en mémoire, par exemple si l'utilisateur entre 10 caractères alors qu'on n'avait réservé que 5 cases en mémoire.

L'idéal est de faire appel à la fonction fgets pour récupérer du texte saisi par l'utilisateur.

Il faut en revanche éviter à tout prix d'utiliser la fonction gets qui n'offre pas de protection contre le buffer overflow.

Vous pouvez écrire votre propre fonction de saisie du texte qui fait appel à fgets comme on l'a fait afin d'améliorer son fonctionnement.

Créé avec HelpNDoc Personal Edition: Produire des livres électroniques facilement