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.


Anmelden zum Antworten