Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

strcpy( Name, "Kofler-Angermannsdorf");

Diese Zeile kopiert also nun die Zeichen des Namens in den Speicher, der ab der Adresse von Name beginnt. Danach sieht der Speicher wie folgt aus:

Achtung: Der String endet mitten in der zweiten Variable.

Der Speicher, der der Variablen Name zur Verfügung steht, ist zu klein. Das weiß der strcpy-Befehl jedoch nicht, denn der kennt ja nur die Adresse für das erste Zeichen und kopiert dann wie vom Programmierer verlangt alle anderen Zeichen des Namens in die folgenden Speicherzellen. Das Resultat ist verheerend: Die Zeichen überschreiben Speicher, der eigentlich der Variablen Vorname gehört.

Überschriebener Speicher = kaputte Daten