Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

Die nächste Programmzeile kopiert den Text "Kofler" in die Speicherzellen der Variablen Name. Da Strings in C eine abschließende 0 als Endemarkierung haben, wird also eine Zelle mehr belegt, als für den Wert "Kofler" eigentlich notwendig wäre.

strcpy( "Kofler", Name);

Als Resultat dieses Befehls sind nun also einige Speicherzellen mit "sinnvollen" Werten belegt. An Adresse 0 steht also der Buchstabe "K", an Adresse 1 steht das "o" und die folgenden Zellen enthalten den Rest des Namens, bis schließlich die Zelle an Adresse 6 die abschließende "0" enthält. Im letzten Schritt des Programms wird nun der Vorname in die zugehörige Variable kopiert.

strcpy( "Heinz", Vorname);

Alles in Ordnung: Die beiden Strings sind nicht länger als erlaubt.