Bufferoverflow verhindern
-
Hi,
habe ein demprimierendes Problem! Wie kann ich einen Bufferoverflow in C verhindern? Programmiere hauptsächlich in Java und da geht soetwas nur schwer, darum stellt das für mich hier ein Problem dar:#include<stdio.h> int main() { char c[5]; printf("Bitte einen max. 5-stelligen Text eingeben: "); scanf("%s", &c); printf("Ihre eingegebener Text: %s", c); getchar(); getchar(); return 0; }
Wenn ich etwas mehr als 5 Zeichen eingebe, dann kommt eine Exception. Wenn ich wesentlich mehr Zeichen eingebe, dann stürtzt mein Programm ab.
Wie kann ich das verhindern?Dann noch etwas:
Ich compiliere das in lcc und sobald ich ein text mit Leerzeichen eingebe, dann stürtzt ebenfalls mein Programm ab. Wieso ist das so?Liebe Grüße
Real
-
mit fgets(buf, 5, stdin) geht das besser
-
Danke!
Liebe Grüße
Real
-
Real schrieb:
... char c[5]; ... scanf("%s", &c); ...
Das wär sowieso falsch gewesen. scanf() würde in dem Fall auf die Adresse des Zeigers c schreiben und nicht auf die Adresse des Arrays.