Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

}

Das so aufgeteilte Programm erfüllt dieselbe Aufgabe wie das ursprüngliche Programm. Der Hauptteil besteht nun im Wesentlichen daraus, dass dort die selbst definierten Funktionen nacheinander aufgerufen werden.

Puffer-Schutz

Um die Sache wieder ein wenig übersichtlicher zu gestalten, wird im Folgenden neben dem Hauptteil nur noch eine der neuen eigenen Funktionen betrachtet: Die Funktion CopyName.

Diese Funktion erweitern wir nun ein wenig, um dem Buffer-Overflow-Problem aus dem Weg zu gehen: Zunächst wird der Name in einen temporären Puffer kopiert und dort die Länge des Strings überprüft. Ist der Text länger als die 15 zur Verfügung stehenden Zeichen, so gibt die Routine eine Fehlermeldung aus und kopiert den String nicht. Die Länge eines Textes liefert die Funktion strlen().

Damit das Problem des Pufferüberlaufs bei der temporären Variablen nicht auftreten kann, erhält sie mehr Speicher und wird 250 Bytes lang. Sieht man zunächst von böswilligen Angriffen ab, ist dies für einen Namen auf jeden Fall ausreichend.