Frage : Puffer-Überschuss

Dieses eine schnelle, aber offensichtliche klingende Frage. Wenn Sie einen 16-Byte-Puffer haben, wie viel Daten können Sie in sie vor den Pufferüberschüssen einsetzen? Ich annehmen 16 Bytes 6, aber ich erklärt worden, dass dieses eine Spitze einer Trickfrage ist. Weiß jemand?

Antwort : Puffer-Überschuss

Der Schlüssel ist die Schnur sind gewöhnlich alias ungültige beendete Schnur. Bedeutung, wenn er Länge von 16 hat, die von einem Nullzeichen exklusiv ist. Die der grammatischen Definition Notwendigkeit gewöhnlich, UNGÜLTIGE Putzfrau zu finden, damit sie weiß, dass sie zum Ende der Schnur gekommen und fortfahren kann, andere Tätigkeiten zu tun (wie auszusortieren der Druck, usw.). So Verteilung des Gedächtnisses (Haufen oder Stapel), dieses sollte um durch Programmierer immer kümmert werden.

E.g. Schnur [LENGTH+1] oder string_ptr = malloc verkohlen (LENGTH+1)

, so ist überzulaufen es einfach, zu sagen, dass, wenn Sie einen 16-Byte-Puffer haben, es in Putzfrauschnur [LÄNGE] übersetzt wo LÄNGE 16 ist. So erwartete die Schnur sicherzustellen, dass kein Überlauf einer weniger sein sollte (z.B. LENGTH-1). Selbstverständlich annehme ich h, dass die Bytereihe in der Tat ungültige beendete Art Reihe sind. Andernfalls sollte es sein Überprüfung, indem es Funktionen usw. (gegründete Länge des Bytes) in den Codes empfängt.

Es gibt mehr zum Überlauf so, dass er Rücksprungadresse und usw. aufhebt, aber vorschlägt er, dass Sie diese Verbindung auf gutem gelesenem @ http://en.wikipedia.org/wiki/Buffer_overflow heraus überprüfen können
Weitere Lösungen  
 
programming4us programming4us