Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

Genau wie es zuvor gleichgültig war, dass der Name "Kofler" kürzer als die festgelegten 15 Zeichen war, ist es an dieser Stelle gleichgültig, dass der Name länger ist: Da das Programm nur mit Adressen arbeitet, an die dann Zeichen kopiert werden, gibt es keinen Schutz vor derartigen Fehlern. Der Fehler hat aber zunächst keinerlei Auswirkungen. Würde man nun zum Beispiel den Inhalt der Variablen Name mit

Puts( Name);

ausgeben, dann würde die Puts()-Funktion ganz wie erwartet den Text

Kofler-Angermanssdorf

 

am Bildschirm anzeigen. Die Adresse von Name ist völlig in Ordnung und ab dieser Adresse beginnt auch ein String der völlig ordnungsgemäß mit einer 0 abgeschlossen wurde. Aus Sicht von Puts() ist damit alles in bester Ordnung - dass einige der Zeichen sich de facto im Speicherbereich einer anderen Variablen befinden, tut der Sache keinen Abbruch.