View Issue Details

IDProjectCategoryView StatusLast Update
0003100PluginsArclitepublic2015-10-27 19:22
Reportera-iv Assigned To2useven10  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Fixed in Version3.0 
Summary0003100: 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 Reproduce1. Создаём новую папку.
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
Больше архивов из этой серии у меня нет.

К сожалению, ПО и условия создания этих архивов мне не известны.
TagsNo tags attached.

Activities

2useven10

2015-10-19 21:55

developer   bugnote:0013996

Проблема в наличии каталога с пустым именем в архиве.
Фар трактует это как корень архива и рекурсивно туда заходит.
Наверное надо такие 'каталоги' игнорировать...

a-iv

2015-10-20 06:39

reporter   bugnote:0013997

Отмечу, что:
WinRar 3.60 и архиватор, встроенный в Windows 10, не отображают папки с именем '/'.
WinRar 5.20 и FAR с плагином ArcLite 1.6.15 отображают такие папки.
7Zip 15.08 Beta и FAR с плагином 7Zip 4.61 отображают такие папки и даже позволяют заходить в них.

Последний вариант со стороны пользователя выглядит лучше, т.к. сохраняет структуру, задуманную пусть и безумным, но автором этого архива.

a-iv

2015-10-20 07:25

reporter   bugnote:0013998

Не сказать, чтобы я разбирался в спецификации 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 не падал при попытке поиска по архивам. Для этого любое решение будет хорошим.

2useven10

2015-10-20 14:26

developer   bugnote:0013999

4441

Issue History

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