[devel] Fwd: fuse-encfs-1.5.2-alt7: Sisyphus/x86_64 test rebuild failed [3]

Vladislav Zavjalov slazav на altlinux.org
Пт Мар 12 15:49:58 UTC 2010


On Fri, Mar 12, 2010 at 06:21:06PM +0300, Денис Смирнов wrote:
> On Fri, Mar 12, 2010 at 12:58:06AM +0300, Vladislav Zavjalov wrote:
> 
> VZ> Придумал не слишком красивенький обход (в приложении)
> 
> Спасибо! А что вообще этот кусок кода в encfs делает, и есть ли риск
> несовместимостей от этого патча?

Я это понял так:
Это запись и чтение xml-конфигов с помощью boost/archive и boost/serialization
В xml записывается объект типа EncFSConfig, и к нему пишется
версия, чтоб потом правильно читать устаревшие конфиги.

Фигня в том, что версия устанавливается 20080816, а где-то в boost-е 
она приводится к uint16 (я покопался, но не понял где - везде вроде unsigned int).
А при чтении там стоят всякие проверки, типа "если старше 20080816 - такие поля не нужны" 
и т.п. И с учетом этих проверок boost'у предлагают читать не
тот объект, который записан. (Это все можно смотреть в файле FileUtils.cpp)

Насчет патча - он сомнительный. Он перед всякими проверками говорит
if (version < 65536) version+=65536*306;
Мало того, что с версиями > 20120101 это уже не будет работать, так еще
и конфиги, записанные разными весиями программы могут перепутаться.
Сейчас в конфиги будет писаться неправильная обрезанная версия
и читаться она будет правильно только сборкой с этим патчем.

В общем, я бы еще подумал. Как минимум, попытался бы
сделать, чтоб в конфиги писалась правильная версия (хотя это какие-то
недра boost'a)...

И - попинать знатоков boost'a, что там у них за фигня.

Слава


Подробная информация о списке рассылки Devel