I have determined that 3cdaemon FTP is not correctly reporting file sizes larger than 2,147,483,647 bytes. The size is being stored as a 32bit integer by 3cdaemon and the value is wrapping around for example a file with a size of 3,466,795,008 bytes is being reported as -828,172,288 bytes.
FlashFXP fully supports 64bit file sizes but this also requires the FTP server to support 64bit file sizes.
I've been exploring different ways to partially overcome this issue by unwrapping the size when its a negative value and this appears to work when the real file size is less than 4,294,967,295 bytes.
However there are still some limitations that cannot be overcome by a partial fix, such as resuming the file with an offset greater than 2,147,483,646 bytes.
In my tests with 3cdaemon FTP I was able to crash the server by requesting a resume offset of 2,147,483,647 and then attempting to download the file.
|