1 Pluspunkt 0 Minuspunkte

Die Funktion gets ist unsicher weil sie keine Möglichkeit hat die Länge der Eingabe zu begrenzen. Aber was kann dabei passieren?

char string[50];
printf ("Namen eingeben: ");
gets (string);
printf ("Hallo %s",string);

bezieht sich auf eine Antwort auf: Eingabe mit Leerzeichen in C
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte
Die Funktion liest Zeichen von stdin, bis es ein Zeilenumbruchzeichen (\n) oder das Dateiende erreicht. Wenn die eingegebene Zeichenkette länger ist als der dafür vorgesehene Speicherplatz (Buffer), kann das zu einem sogenannten "Buffer Overflow" führen. Dabei werden die zusätzlichen Daten in Speicherbereiche geschrieben die nicht dafür vorgesehen sind und vielleicht sogar Daten anderer Prozesse anthalten. Im schlimmsten Fall kann das zum Absturz des Computer führen.
von (776 Punkte)