summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2017-10-26 11:51:03 +0200
committerGravatar Nikias Bassen2017-10-26 11:51:03 +0200
commitb398a9ab735ea63ffd17d7c063503521460ed83f (patch)
treebeed060d7af07317b4d2393c3d0460eb3fdc47b0 /tools
parent2ebf47816089d0053daf6b919089000fbe36a338 (diff)
downloadlibirecovery-b398a9ab735ea63ffd17d7c063503521460ed83f.tar.gz
libirecovery-b398a9ab735ea63ffd17d7c063503521460ed83f.tar.bz2
irecv_send_buffer: Fix DFU file upload failure due to oversized last packet
In DFU mode the last packet contains the checksum for the transferred data (and 12 additional bytes, total 16 bytes). If the last packet is larger than 2032 bytes we would send a packet that is larger than the packet size of 2048 bytes which would make the file upload fail. This is especially the case for the iOS 11.0.x iBSS for the iPhone 8. With this commit the size is checked and if it would be larger than the packet size, we split the data portion and the checksum into two separate packets. It might even be safe to always split the last packet into data and checksum, but until this is proven to work with all (especially older devices) we just split when we detect the oversized packet for now.
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions