Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

Das führt also nun zu diesem Aufbau des Arbeitsspeichers:

Kurz rekapituliert: Für den Namen wurden 15 Bytes vereinbart, denn das char-Array der Variable Name wurde als ein Array mit 15 Elementen angelegt. Erst nach diesen 15 Bytes steht Platz für die nächste Variable zur Verfügung. Die Adresse von Vorname liegt also bei Byte 16 an Adresse 15 und darum wird das erste Zeichen des Vornamens auch an diese Adresse kopiert.

Verarbeitung der Variablen

Mit diesem Speicheraufbau kann das Programm nun weiterarbeiten. Angenommen, es soll nun den Namen und den Vornamen ausgeben: Dazu verwendet man die Funktion puts. Diese bekommt als Parameter die Adresse des gewünschten Strings. Die Funktion schreibt den String dann bis zu seinem Ende auf den Bildschirm. Das Ende des Strings erkennt die Funktion anhand der abschließenden Null. Um Namen und Vornamen auszugeben, würde man die folgenden beiden Zeilen verwenden:

Puts( Name);

Puts( Vorname);