Zitat:
Delphi-Quellcode:
MAX_USERNAME_LENGTH = 256;
var
Buffer: Array[0..MAX_USERNAME_LENGTH] of WIDEChar;
Das Array ist 257 Zeichen lang, der
API wird SizeOf übergeben, also 257*2 aka 514 Byte, was die
API aber als Char interpretiert und somit ein Bufferoverrun vorprogrammiert ist. (bei
Unicode)
Dann erwartet die
API die Größe exkl. der #0, womit sie mochmal weitere 2 Byte überschreiben könnte.
Die
API würde zwar nicht außerhalb des Puffers schreiben, aber wenn man ihr eine falsche Größe nennt, dann kann sie natürlich nichts dafür.
0..10 ... bei 11 bis 22 Chars würde es also Spaß machen.