Hallo zusammen,
sorry ich weiß, es ist nicht Java, dennoch würde ich gerne folgende Frage stellen.
In der Vorlesungsfolie steht, dass der Puffer der Größe 10 Platz für 9 Zeichen bietet, plus abschließende 0x0.
In dem Thema geht es um Buffer-Overflows.
Was ich jetzt nicht verstanden habe ist, ob wenn ich einen String in C reingebe, dann am Ende immer automatisch ein 0x0 gesetzt wird oder ob dieses 0x0 quasi im Buffer schon steht.
Also wenn ich 20 char werte eingebe, dann habe ich 2 Annahmen:
Annahme 1: 20 Char-Werte sind 20 + 0x0 sprich 21 Byte.
Jetzt schreibe ich von unten nach oben voll und es wäre dann der buffer voll mit 10 byte überschrieben, die variable i mit 4 überschrieben wird und die 8 byte dann mit den letzten 6 byte und abschließen dem 0x0 Wert überschrieben wird.
Annahme 2: 20 Char Werte.
Ich schreibe wieder von unten nach oben aber ich gehe davon aus das im Buffer nur 9 Werte reinpassen, weil eine Stelle mit 0x0 belegt und nicht überrschreibbar ist (2.1 also übersprungen wird oder 2.2 doch überschrieben wird).
Die Varialbe i schreibe ich wieder voll und nun verbleiben die letzten 8 byte.
2.1 dort schreibe ich die letzten 7 byte rein.
2.2 dort schreibe ich die letzten 6 byte rein + dem 0x0 byte.
Puh, ich hoffe es kann mir einer diese Frage beantworten.
Im Endeffekt ist die Frage, ob der Buffer oder der String mit 0x0 enden.
Vielen Dank schonmal!
sorry ich weiß, es ist nicht Java, dennoch würde ich gerne folgende Frage stellen.
In der Vorlesungsfolie steht, dass der Puffer der Größe 10 Platz für 9 Zeichen bietet, plus abschließende 0x0.
In dem Thema geht es um Buffer-Overflows.
Was ich jetzt nicht verstanden habe ist, ob wenn ich einen String in C reingebe, dann am Ende immer automatisch ein 0x0 gesetzt wird oder ob dieses 0x0 quasi im Buffer schon steht.
Also wenn ich 20 char werte eingebe, dann habe ich 2 Annahmen:
Annahme 1: 20 Char-Werte sind 20 + 0x0 sprich 21 Byte.
Jetzt schreibe ich von unten nach oben voll und es wäre dann der buffer voll mit 10 byte überschrieben, die variable i mit 4 überschrieben wird und die 8 byte dann mit den letzten 6 byte und abschließen dem 0x0 Wert überschrieben wird.
Annahme 2: 20 Char Werte.
Ich schreibe wieder von unten nach oben aber ich gehe davon aus das im Buffer nur 9 Werte reinpassen, weil eine Stelle mit 0x0 belegt und nicht überrschreibbar ist (2.1 also übersprungen wird oder 2.2 doch überschrieben wird).
Die Varialbe i schreibe ich wieder voll und nun verbleiben die letzten 8 byte.
2.1 dort schreibe ich die letzten 7 byte rein.
2.2 dort schreibe ich die letzten 6 byte rein + dem 0x0 byte.
Puh, ich hoffe es kann mir einer diese Frage beantworten.
Im Endeffekt ist die Frage, ob der Buffer oder der String mit 0x0 enden.
Vielen Dank schonmal!