zip в ubuntu 24.04 вызывает переполнение буфера, если присутствует знак одинарной правой кавычки

Вопрос или проблема

При использовании команды zip я иногда получаю следующую ошибку:
*** обнаружено переполнение буфера ***: завершено
Некоторые имена файлов в материале, который создается резервная копия, содержат одинарные кавычки (код ascii E2 80 99). Это является проблемой только при использовании zip на ubuntu 24.04. На ubuntu 22.04 всё работает.

Я не понимаю, как исправление попадает в обновление программного обеспечения, но, наконец, думаю, что по этой проблеме, а также по более важной проблеме, связанной с такими символами, как немецкий диакритический знак (“ö”), возможно, ведётся работа. Следующее только что появилось в отчете об ошибке 2062535

** Предложение на слияние: https://code.launchpad.net/~zhsj/ubuntu/+source/zip/+git/zip/+merge/475986

Как обходное решение:

  1. Получите более раннюю версию zip. В моем случае я взял /usr/bin/zip из Ubuntu 22.04
  2. Отложите /usr/bin/zip, возможно, как /usr/bin/zip24
  3. Поместите более старую версию zip в любое место, в моем случае я разместил её в /usr/local/bin/zip
  4. Создайте символическую ссылку по адресу /usr/bin/zip, указывающую на старую версию.
    В моем случае команда (выполненная из директории /usr/bin) была
    ln -s /usr/local/bin/zip zip

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

В моем случае zip “спотыкался” о имя файла, содержащего немецкий диакритический знак (“ö”). Я мог переименовать файл, и он снова заработал.

Существует исправленная версия 3.0-14 в архиве Debian: https://packages.debian.org/trixie/zip

Правка: Теперь она также доступна в архивах Ubuntu 24.10: https://launchpad.net/ubuntu/oracular/+source/zip

Просто загрузите deb-файл, соответствующий вашей архитектуре, и установите его.

Ответ или решение

Ошибка переполнения буфера при использовании команды zip в Ubuntu 24.04 из-за одиночной кавычки

Ваша проблема с ошибкой " buffer overflow detected : terminated" при использовании команды zip в Ubuntu 24.04 действительно вызывает беспокойство. Эта ситуация особенно возникает при наличии в именах файлов символа одиночной кавычки, который имеет код ASCII E2 80 99, а также немецкого умлаута ("ö"). Данная проблема не возникает в предыдущей версии операционной системы – Ubuntu 22.04.

Причины и источники проблемы

Ошибка переполнения буфера, с которой вы столкнулись, может быть связана с определенными изменениями в версии zip, которая была получена в Ubuntu 24.04. Это может быть изменение в обработке символов, что делает команду zip уязвимой для определенных символов, таких как указанные выше.

Эта проблема была зафиксирована в отчете об ошибках (bug report) 2062535, где обсуждается необходимость исправления как для одиночной кавычки, так и для других символов, таких как немецкий умлаут. В связи с этим, уже существует предложение по слиянию, которое можно найти по следующему адресу: Merge proposal.

Временное решение

В качестве временного решения вы можете использовать более раннюю версию zip, которая работает корректно в вашей ситуации. Для этого выполните следующие шаги:

  1. Получите более раннюю версию zip, и, как вы упомянули, можно использовать zip из Ubuntu 22.04:

    cp /usr/bin/zip /usr/bin/zip24
  2. Поместите старую версию zip в подходящее место. В вашем случае:

    mv /usr/bin/zip /usr/local/bin/zip
  3. Создайте символическую ссылку на старую версию, чтобы команда zip всегда ссылалась на нее:

    ln -s /usr/local/bin/zip /usr/bin/zip

После выполнения этих шагов вы сможете использовать zip без возникновения ошибок при наличии проблемных символов в именах файлов.

Долгосрочное решение

Предоставляется информация о том, что исправленная версия zip (3.0-14) доступна в архиве Debian, и можно установить ее через следующие ссылки:

Для установки просто загрузите соответствующий .deb файл для вашей архитектуры и используйте следующую команду:

sudo dpkg -i name_of_downloaded_package.deb

Заключение

Ваша проблема с переполнением буфера в утилите zip на Ubuntu 24.04, вызванная определенными символами в именах файлов, может временно быть решена путём использования более ранней версии утилиты или установкой фиксированной версии из архивов. Рекомендуется следить за обновлениями в репозиториях и в баг-трекерах, чтобы получить окончательное исправление проблемы, так как разработчики работают над её устранением.

Оцените материал
Добавить комментарий

Капча загружается...