View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003100 | Plugins | Arclite | public | 2015-10-19 20:59 | 2015-10-27 19:22 |
Reporter | a-iv | Assigned To | 2useven10 | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Fixed in Version | 3.0 | ||||
Summary | 0003100: Crash on search in invalid ZIP archive | ||||
Description | При попытке поиска файлов со включенной опцией "Искать в архивах" в папке, где есть невалидный ZIP архив (см. ниже): 64bit приложение падает без предупреждений, 32bit приложение выдает сообщение об ошибке: ╔════════════════════════ Exception occurred ════════════════════════╗ ║ Exception: Stack Overflow ║ ║ Address: 0x774F6DBB ║ ║ Function: ║ ║ Module: X:\Path\To\Far.exe ║ ╟────────────────────────────────────────────────────────────────────╢ ║ { Terminate Far } [ Debug ] [ Ignore ] ║ ╚════════════════════════════════════════════════════════════════════╝ | ||||
Steps To Reproduce | 1. Создаём новую папку. 2. Скачиваем в неё архив (21Mb): https://www.dropbox.com/s/6vufe8hv8lr66bp/SL%238.zip?dl=0 3. Скачиваем последнюю ночную сборку Far 3.0.4439. 4. Удаляем все плагины кроме ArcLite. 5. Запускаем Far. 6. Переходим в созданную папку. 7. Запускаем поиск со включенной опцией "Искать в архивах". | ||||
Additional Information | Проблема воспроизводится: 1. В Far 3.0.4242 с ArcLite 1.6.6.0 под Windows 2008 R2. 2. В Far 3.0.4439 с ArcLite 1.6.15.0 под Windows 10 Pro. Та же проблема воспроизводится с другим архивом (37Mb): https://www.dropbox.com/s/ldvjkyyur8iba0c/SL%235.zip?dl=0 Больше архивов из этой серии у меня нет. К сожалению, ПО и условия создания этих архивов мне не известны. | ||||
Tags | No tags attached. | ||||
|
Проблема в наличии каталога с пустым именем в архиве. Фар трактует это как корень архива и рекурсивно туда заходит. Наверное надо такие 'каталоги' игнорировать... |
|
Отмечу, что: WinRar 3.60 и архиватор, встроенный в Windows 10, не отображают папки с именем '/'. WinRar 5.20 и FAR с плагином ArcLite 1.6.15 отображают такие папки. 7Zip 15.08 Beta и FAR с плагином 7Zip 4.61 отображают такие папки и даже позволяют заходить в них. Последний вариант со стороны пользователя выглядит лучше, т.к. сохраняет структуру, задуманную пусть и безумным, но автором этого архива. |
|
Не сказать, чтобы я разбирался в спецификации ZIP. Но я постарался представить себя разработчиком ZIP архива, который после распаковки должен: 1. Положить файл foo.txt в текущую папку. 2. Положить файл baz.txt в папку /etc/bar. Для этого я удалил 5 "лишних" строк проверок из библиотеки zipfile из поставки Python 3.5. И написал следующий код: import os, zipfile # Подготавливаем исходные файлы: open('foo.txt', 'w').close() os.mkdir('/etc') os.mkdir('/etc/bar') open('/etc/bar/baz.txt', 'w').close() # Создаём архив: arch = zipfile.ZipFile(file='install_me.zip', mode='w') arch.write(filename='foo.txt', arcname='foo.txt') arch.write(filename='/', arcname='/') arch.write(filename='/etc', arcname='/etc') arch.write(filename='/etc/bar', arcname='/etc/bar') arch.write(filename='/etc/bar/baz.txt', arcname='/etc/bar/baz.txt') arch.close() Полученный файл можно посмотреть здесь: https://www.dropbox.com/s/50h3o4k13q03pji/install_me.zip?dl=0 ArcLite будет показывать файл foo.txt, папку etc и папку с пустым именем, в которую нельзя зайти. WinRAR 5.20 будет показывать файл foo.txt, папку /etc и папку с пустым именем, в которую нельзя зайти. 7Zip 15.08 Beta будет показывать файл foo.txt, папку с пустым именем, в которой будет папка etc. Проводник Windows 10 покажет только файл foo.txt :) Я бы вообще показал файл foo.txt и папку '/'. Понимаю, что сложно рассуждать о том, как должен работать такой сценарий и ещё сложнее всё это реализовать. В любом случае сейчас хотелось бы, чтобы FAR не падал при попытке поиска по архивам. Для этого любое решение будет хорошим. |
|
4441 |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-10-19 20:59 | a-iv | New Issue | |
2015-10-19 21:55 | 2useven10 | Note Added: 0013996 | |
2015-10-20 06:39 | a-iv | Note Added: 0013997 | |
2015-10-20 07:25 | a-iv | Note Added: 0013998 | |
2015-10-20 14:26 | 2useven10 | Note Added: 0013999 | |
2015-10-20 14:26 | 2useven10 | Assigned To | => 2useven10 |
2015-10-20 14:26 | 2useven10 | Status | new => feedback |
2015-10-27 19:22 | 2useven10 | Status | feedback => closed |
2015-10-27 19:22 | 2useven10 | Resolution | open => fixed |
2015-10-27 19:22 | 2useven10 | Fixed in Version | => 3.0 |