Bug 25090 - Теряет русскую юникодную букву c
: Теряет русскую юникодную букву c
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/ash)
: unstable
: all Linux
: P3 critical
Assigned To:
:
: http://article.gmane.org/gmane.comp.s...
:
:
: 10446
  Show dependency tree
 
Reported: 2011-02-15 18:14 by
Modified: 2011-02-24 16:26 (History)


Attachments
0001-BUILTIN-Fix-corruption-of-reads-with-byte-0x81.patch (1.30 KB, patch)
2011-02-24 14:28, Alexey Gladkov
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2011-02-15 18:14:32
----с.sh--------
while read a; do
echo "[$a]"
done
/----с.sh--------
echo "фс" | ash ./c.sh
[ф�]
-----------------
echo "фс" | sh ./c.sh
[фс]
------- Comment #1 From 2011-02-16 04:33:37 -------
Это regression, ash-0.5.5.1-alt5 из 5.1 букву "с" не теряет.
Ошибка была найдена при помощи strace, который показал, что половина буквы "с"
теряется во время read.
------- Comment #2 From 2011-02-17 00:50:41 -------
Виноват тот патч, который я ревертил в ash-0.5.5.1-alt5.
------- Comment #3 From 2011-02-24 01:51:22 -------
(In reply to comment #2)
> Виноват тот патч, который я ревертил в ash-0.5.5.1-alt5.

Можно это как-нибудь быстро исправить, или проще отказаться от ash везде, где
используется read?
------- Comment #4 From 2011-02-24 02:36:42 -------
Быстро исправить нельзя, можно сломать ещё хуже. В debian и тем более в других
дистрах патчей на эту тему нет. Варианта три:

1. Отказывайтесь от использования dash;
2. Откатываем dash на тот момент, когда патч можно было откатить, но получаем
другие баги;
3. Не спешно исправляем или ждём исправления в апстрим.
------- Comment #5 From 2011-02-24 02:53:52 -------
Дублирую сюда. Ошибка локализована до коммита. Осталось понять, что в нём так
ломает read. У меня есть предположение.
------- Comment #6 From 2011-02-24 03:22:34 -------
http://git.altlinux.org/people/legion/packages/ash.git?p=ash.git;a=blob;f=src/miscbltin.c;h=653c92f4381a0e1aecec131b3680f6869ca1e253;hb=49a94e2bab1e4f601a9fbdf9615d9e4e0150e412#l121

до вызова rmescapes() символ нормальный, после битый.
------- Comment #7 From 2011-02-24 03:37:09 -------
Исправить можно. f8231aea37e921492fc7fbd972385ab5b90e8627 на ту же тему, но в
другом месте.
------- Comment #8 From 2011-02-24 14:28:02 -------
Created an attachment (id=4819) [details]
0001-BUILTIN-Fix-corruption-of-reads-with-byte-0x81.patch

Думаю, что раз до коммита 55c46b dash не занимался удалением CTLESC в read, то
можно спокойно убрать эту операцию из read.
------- Comment #9 From 2011-02-24 15:14:16 -------
ash-0.5.6-alt1.20110216 -> sisyphus:

* Thu Feb 24 2011 Alexey Gladkov <legion@altlinux> 0.5.6-alt1.20110216
- New release (0.5.6) and update from upstream git.
- This build provides the following fixes:
  + Fix corruption of readcmd with byte 0x81 (ALT#25090).
------- Comment #10 From 2011-02-24 16:26:13 -------
*** Bug 24483 has been marked as a duplicate of this bug. ***