cin und Buffer Overflow
-
Hallo,
also in C wissen wir ja alle, dass solch ein Code anfällig für Buffer Overflow ist:char string[10];
scanf("%s",string);Eine Lösung dafür wäre:
scanf("%9s",string);Oder fgets(); etc. zu benutzen.
Aber wie sieht das jetzt in C++ aus:
char string[10];
cin >> string;Dies läuft ja auch über, wenn ich mehr als 10 Zeichen eintippe. Allerdings habe ich bisher noch in keinem Buch gesehen, wie man die Länge der Eingabe bei cin; begrenzen kann.
Außerdem beziehen sich die meisten Artikel über Buffer Overflow auf scanf(); oder strcpy(); (etc).Muss man hier also auf eine andere Funktion umsteigen, oder kann ich bei cin angeben, wie lang die Eingabe sein soll?
MFG
-
Man könnte einfach googlen, dann käme man beim zweiten Ergebnis zu dem hier.
Es hätte mich auch schwer gewundert, wenn cstdio den iostreams etwas voraus hätte :xmas1:
-
Ich les dazu immer einen String ein, so kann ich nicht nur die Länge angeben sondern auch gleich Whitespace, etc. miteinbeziehen
char myStr [100]; cin.getline(myStr,10); // even better #include <string> ... string myStr; getline(cin,myStr);MfG SideWinder