LINUX.ORG.RU

Критическая ошибка в bash 5.1-2+b3, Debian 11

 ,


1

1

Пакет bash 5.1-2+b3, входящий в состав текущего stable-релиза Debian 11 (bullseye), содержит критическую ошибку, которая может приводить к искажению обрабатываемого текста в кодировке UTF-8 - в том числе русского текста. Исправление присутствует в пакете bash 5.1-2+deb11u1, который находится в stable-proposed-updates репозитории и появится только в следующем point-релизе Debian 11 (stable).

Желающие могут обновить пакет, не дожидаясь выхода очередного point-релиза:

deb http://ftp.us.debian.org/debian bullseye-proposed-updates main contrib non-free

>>> Подробности

★★

Проверено: maxcom ()
Последнее исправление: unfo (всего исправлений: 3)

Ответ на: комментарий от InterVi

Нет, опять засовывание обработки кодировок туда, где должны были быть binary-safe операции.

firkax ★★★★★
()
Ответ на: комментарий от InterVi

Да не-е… Здесь скорее логическая ошибка - regress. Просто разработчик, который текущим сопровождением bash занимается, взял да встрамил какой-то старый кусок кода )) С таким же успехом можно было и на каком-нибудь Rust-е накуралесить.

Меня больше всего возмутило отношение к этому делу самого разраба, да и команды Debian: bash курочит данные в течении нескольких месяцев - и всем пофигу! Разрабочик добавил исправление - и молчком, хотя должен был персонально оповестить о допущенной «ошибочке» всех основных поставщиков Linux. В Debian, когда их уже носом ткнули, просто добавили пакет в proposed-updates.
Капец…

Я на эту ошибочку наткнулся только потому, что мой bash-скрипт после записи переменной в файл повторно считывал файл в другую переменную и сравнивал для надежности значения. Моя «паранойя» оказалась оправданной )

vinvlad ★★
() автор топика

Не очень понятно, почему новость в разделе Debian, если описанная проблема касается и других дистрибутивов.

Rootlexx ★★★★★
()
Ответ на: комментарий от BydymTydym

К проездному еще и билетик компостируете?

Нет - просто знаю, что такое «ошибка ввода-вывода» )
Бывает еще искажение данных при передаче по сети - никогда не сталкивались?

vinvlad ★★
() автор топика
Ответ на: комментарий от Rootlexx

Не очень понятно, почему новость в разделе Debian, …

В upstream-исходниках ошибка уже давно исправлена. Те, кто юзает свежие коммиты, не должны нарваться - хотя, конечно, проверить стоит…
Попросите перенести в общий раздел, если знаете, как это сделать.

vinvlad ★★
() автор топика
Ответ на: комментарий от vinvlad

В upstream-исходниках ошибка уже давно исправлена.

Давно — это в начале года, если не считать devel-ветку. В том же RHEL и клонах ошибка также присутствует.

Rootlexx ★★★★★
()
Ответ на: комментарий от Rootlexx

Давно — это в начале года, …

Ну… я вам «новость» выложил, а вы, и все прочитавшие, уж дальше разнесите среди общественности в меру своих возможностей.

Вот bugreport, к которому приложен пример проверочного bash-скрипта (запускать нужно раз 10-20):
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1012620

vinvlad ★★
() автор топика
Ответ на: комментарий от vinvlad

Не, ну можно и исключение от каждого вывода в лог ловить - мало ли, вдруг в ФС место закончится?
Но смысл-то в такой жизни? Это баш, скрипт тяп-ляп и в продакшн!

BydymTydym
()
Ответ на: комментарий от tz4678_2

Зачем bash, когда есть Zsh…

А вы заголовок темы и стартовый топик внимательно прочитали? Здесь речь идет не о том, что лучше использовать, а о конкретном баге в конкретном программном продукте, который по-факту используется огромным числом людей и организаций.

vinvlad ★★
() автор топика
Ответ на: комментарий от BydymTydym

Но смысл-то в такой жизни? Это баш, скрипт тяп-ляп и в продакшн!

Это не тяп-ляп «скрипт» - это что-то вроде k8s-утилиты kustomize - только гораздо удобнее и практичнее. Постоянно используется для администрирования и обновления конфигурации кластера и для деплоя в кластер свежих коммитов приложений, поэтому написана максимально надёжно. Но это уже совсем другая тема…

vinvlad ★★
() автор топика
Ответ на: комментарий от tz4678_2

да никто просто башем в здравом уме не пользуется в 2022 …

Вы на Docker Hub загляните - посмотрите, на чем написано большинство entrypoint-скриптов…

vinvlad ★★
() автор топика
Ответ на: комментарий от tz4678_2

так я же вам не про zsh отвечал:

речь идет не о том, что лучше использовать, а о конкретном баге в конкретном программном продукте

я про bash и о его использовании далеко не для «свистоперделок». Возможно, вы сами являетесь активным пользователем bash - просто об этом не догадываетесь.

vinvlad ★★
() автор топика
Ответ на: комментарий от vinvlad

возможно, я что-то не так понял :о)

#!/bin/bash
set -e; clear
export LANG="en_US.UTF-8"

rm -f output1.txt output2.txt output3.txt
# MYUTF8=' ... ';
MYUTF8='ввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввв';

for CNT in {0..1000}; do.
echo "### $CNT ###"

echo -n "$MYUTF8" > "output1.txt"
echo    "$( < output1.txt )" > output2.txt
MYINPUT="$( < output1.txt )"
echo    "$MYINPUT"           > output3.txt

if ! diff output2.txt output3.txt ; then
echo -e "\noutput2.txt and output3.txt files should be the same, but they are different!\n"
exit
fi

done

-->

...
### 995 ###
### 996 ###
### 997 ###
### 998 ###
### 999 ###
### 1000 ###

исходные

- slackware 14.2
- bash-4.3.048

p.s. а нуда, точно, у нас-же в 5м бабаше проблемка :о) спасибо

sunjob ★★★★
()
Последнее исправление: sunjob (всего исправлений: 2)
Ответ на: комментарий от sunjob

Там bugreport-е есть в конце ссылочка на конкретный скрипт с гораздо более длинным значением переменной MYUTF8, на котором периодически выскакивала ошибка. Если захотите потестить bash 5-й версии, советую использовать именно этот скрипт и вызывать его в цикле снаружи. Я просто ручками запускал в командной строке, когда подбирал значение переменной - при коротких значениях ошибка не выскакивала.

vinvlad ★★
() автор топика
Ответ на: комментарий от tz4678_2

даже на гей оси по дефолту теперь zsh

По дефолту для новых юзеров, а у созданных до... как был баш так и остался.

anc ★★★★★
()

Ну, баш пишут дебилы, чо. Не знать, чем отличается --i от i-- (уже не говоря о понимании, когда их стоит применять) — это уровень школоты со stackoverflow.

alegz ★★★★
()
Последнее исправление: alegz (всего исправлений: 1)
Ответ на: комментарий от vinvlad

Если захотите потестить bash 5-й версии

а нету у нас 5го бабаша! :о)

sunjob ★★★★
()

UTF-8 кроме web’а нигде не нужен, давно понятно.

x-signal ★★
()
Ответ на: комментарий от tz4678_2

Тяп-ляп и уходим в своп

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

pihter ★★★★★
()
Ответ на: комментарий от alegz

джавобои всегда пишут for (int i = 0; i < ...; i++), наверное, у них научились

tz4678_2
()
Ответ на: комментарий от anc

да оно не важно. тот оратор прав, что в скриптах, которых в системе море будет что-то типа #!/bin/bash, #!/bin/sh… я же просто решил потолстить, конечно, использование зсх не спасет, а вот использование троллинг релиза - да

tz4678_2
()
Ответ на: комментарий от tz4678_2

хотя удивительно сей пример больше не вешает систему

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

andreyu ★★★★★
()
Ответ на: комментарий от vinvlad

Ну если так, то вопросов нет. Хотя для утилок всяческих все-таки Питон привычнее, все-таки комфорта на порядок больше, чем в баше.

BydymTydym
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.