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