[devel] [cyber] I: Sisyphus-20070624 i586 beehive_status: +99 -35 (116)

Epiphanov Sergei =?iso-8859-1?q?serpiph_=CE=C1_nikiet=2Eru?=
Вт Июн 26 12:32:04 MSD 2007


В сообщении от Monday 25 June 2007 20:50:46 Aleksey Novodvorsky написал(а):
> > Ах вот откуда появлялся этот несчастный /scrollkeeper. Жуть какая, и
> > ведь исходники не трогались между старой-старой и новой сборками. Ничего
> > не понимаю.
>
> Там с prefix ничего по дороге не случилось?

Нет, в create_database_directory есть вызов команды на создание 
каталога /var/lib/scrollkeeper (sk_mkdir_with_parents). Так вот, в данной 
функции есть разбор нужного пути по токенам с последующей сборкой из них 
частичных путей. Так вот, вызов вида:

sprintf(path, "%s%s", path, token);

приводит к тому, что исходное значение path затирается и в path попадает 
только сам токен (иногда с начальным слешем, если по другой ветке). В 
результате реально каталог /var/lib/scrollkeeper не создается, производится 
повторное открытие несуществующего каталога (через opendir) без проверки, 
после чего работа с нулевым указателем рушит программу. Следовательно, 
удаляя каталог /var/lib/scrollkeeper в %post через вызов программы 
scrollkeeper-rebuilddb, мы рушим работу библиотеки scrollkeeper.so.0.

-- 
С уважением, Епифанов Сергей


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