metaclass (metaclass) wrote,
metaclass
metaclass

wudt

Есть такой хитрый тул - windows usb/dvd download tool, который пишет исошники виндов на флешки для инсталляции.
И в нем есть баг - на некоторые флешки он принципиально не может записать, ругается "unable to copy files".
Лечат это таким костылем: http://www.techspot.com/community/topics/fix-windows-usb-dvd-download-tool-when-unable-to-copy-files.193386/ - форматируют с помощью diskpart, не из виндо-диско-гуя.

Тул этот опенсорсный, т.к. микрософт там использовал GPL код и я как-то решил выяснить, что же за баг такой мешает этому и почему он лечится такими костылем. Но когда я это делал, меня на что-то отвлекли и я забыл напрочь, что я это вообще делал, где делал, как делал и зачем делал.

Сегодня эта проблема опять всплыла, выкопал в архивах исходники и нашел свои исправления.
Причина косяка - в размерах буферов функции DeviceIoControl с параметрами IOCTL_DISK_GET_DRIVE_LAYOUT_EX/IOCTL_DISK_SET_DRIVE_LAYOUT_EX и их соответствии количеству разделов - неправильное форматирование флешки создает неполноценную таблицу разделов с одним разделом, а буфер заведен под 4 раздела и его размер проверяется в функции, которая делает раздел активным:

https://github.com/phrostbyte/Linux-USB-DVD-Download-Tool/blob/master/IoWrapper/UsbIOWrapper.cpp#L51
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 6 comments