débordement de tampon en C + + est causée par quelques problèmes différents. Souvent , il se produit dans le cadre de l'exploitation d'une fonction destinée à écrire dans un tableau ou d' accéder à la mémoire de profondeur. En règle générale, buffer overflow se produit lorsqu'un utilisateur ou un programmeur données entrées au-delà de la portée d'une variable ou un tableau. Fonctions qui tentent d'aller au-delà de cette gamme peuvent également tenter d' effacer des données dans le système, ou de réorienter le système en supprimant ou en remplaçant l'information. Fonctions en C + +
fonctions en C et C + + se comporter comme prévu , par rapport à d'autres langages de programmation. Fonctions existent, comme toute autre information variable ou d'un système , dans la mémoire et sont référencés par adresse. Fonctions , par eux-mêmes , ne sont que des blocs de code en mémoire qui sont référencés . Toute erreur renvoyée par une référence de fonction pourrait être due à une fonction non déclarée , ou une fonction appelée de manière incorrecte. Une erreur de type buffer overflow serait plus susceptible d' entrer dans le code de la fonction .
Variables et la mémoire
C + + est typé statiquement , ce qui signifie que le programmeur doit spécifier un type de variable en déclarant une variable . C'est parce que C + + met de côté des blocs de mémoire de certaines tailles en fonction du type variable. Un (int) variable entière déclaré dans un programme obtiendra un espace mémoire réservé spécifiquement pour un int . Le bloc mémoire sera la taille exacte d'un entier.
Tableaux
tableaux sont des collections de variables contenues dans un nom. Par exemple , le tableau ci-dessous crée une liste de 10 entiers , qui peut être consulté par référence à un indice (nom [0 ] nom [1] , etc )
int nom [10];
au lieu d'un nombre entier , le tableau met de côté suffisamment d'espace continu pour 10. Cependant, parce que l'accès de l'indice de tableau peut être tentée sur des valeurs au-delà de ce qui est contenu dans le tableau (nom [11], par exemple ) , des erreurs peuvent se produire si le programmeur ne regarde pas la façon dont elle utilise le tableau .
Buffer Overflow
en raison de la nature des tableaux en C + + , un tableau à l'intérieur d'une fonction peut être victime de débordements de tampon . Si un utilisateur entre une entrée de caractère plus grand que le tableau peut manipuler, les caractères supplémentaires vont écraser les données adjacentes au tableau en mémoire . Par exemple , AB exemple de vide
() { int
login [ 15] ;
int i = 0;
while ( cin >> a [i ] ) {
i + +; }
}
la boucle "while" ne finira jamais , et au moment où "i" atteint 15 , l'utilisateur va commencer la saisie des données qui écrase la mémoire. Cela peut avoir des conséquences imprévues , comme la réaffectation d'une variable locale , ou , dans des circonstances spécifiques , la réécriture de pointeurs de fonctions de référence différents , du code malveillant.