[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