Bug 8346 - DHCPD crashes when failover is used
Summary: DHCPD crashes when failover is used
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: dhcp-server (show other bugs)
Version: unstable
Hardware: all Linux
: P2 critical
Assignee: Mikhail Efremov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-10-26 14:43 MSD by Alex Moskalenko
Modified: 2006-08-25 16:06 MSD (History)
1 user (show)

See Also:


Attachments
патч на dhcp-3.0.1rc14-owl-alt-drop_priv.patch (2.09 KB, patch)
2005-10-26 15:16 MSD, Alex Moskalenko
no flags Details | Diff
dhcp-3.0.3-owl-alt-drop_priv.patch (10.66 KB, patch)
2005-10-26 22:52 MSD, Dmitry V. Levin
no flags Details | Diff
dhcp-3.0.3-alt1.nosrc.rpm (53.43 KB, application/octet-stream)
2005-10-27 03:15 MSD, Dmitry V. Levin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alex Moskalenko 2005-10-26 14:43:08 MSD
DHCPD падает по sigsegv при определении хотя бы одного failover-сервера в  
dhcpd.conf. Происходит после накладывания патча  
dhcp-3.0.1rc14-owl-alt-drop_priv.patch. В этом патче в файле dhcpd.c функции 
main() переносится часть кода, инициализирующая базу адресов, ниже по тексту 
для инициализации базы после перехода в chroot и сброса привилегий. при этом 
вызов функции postdb_startup() оставлен на старом месте, что приводит к ее 
вызову до инициализации базы адресов. Он и вызывает падение dhcpd. если 
функцию перенести ниже и вызвать после перехода в chroot и инициализации базы, 
то dhcpd стартует и работает. 
Steps to Reproduce:
1. Добавьте описание failover peer в dhcpd.conf 
2. Запустите dhcpd 
3. segfault... 
Actual Results:  
dhcpd прекращает работу  

Expected Results:  
нормальная работа dhcpd
Comment 1 Alex Moskalenko 2005-10-26 15:16:56 MSD
Created attachment 1215 [details]
патч на dhcp-3.0.1rc14-owl-alt-drop_priv.patch
Comment 2 Dmitry V. Levin 2005-10-26 20:57:21 MSD
Reassigned to maintainer.
Comment 3 Dmitry V. Levin 2005-10-26 22:52:02 MSD
Created attachment 1216 [details]
dhcp-3.0.3-owl-alt-drop_priv.patch

Похоже, postdb_startup() надо расщепить.
Попробуйте этот патч.
Comment 4 Dmitry V. Levin 2005-10-27 01:04:10 MSD
Нет, dhcp_failover_startup() после вызова drop_priv() нормально работать не
сможет, поскольку для того, чтобы использовать привилегированные порты,
требуются права, которых после drop_priv() уже нет.

Боюсь, что придётся сбрасывать права по частям.

Другие идеи есть?
Comment 5 Alex Moskalenko 2005-10-27 01:47:15 MSD
> Другие идеи есть? 
 
Использовать непривилегированные порты? Насколько я понял из man dhcpd.conf, 
порты за failover-протоколом не закреплены и выбираются произвольно. Так что 
вариант с портами > 1024 может оказаться вполне рабочим. 
Comment 6 Dmitry V. Levin 2005-10-27 01:54:18 MSD
Уже закреплено, см. https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167292

Т.е. в качестве временного workaround'а можно использовать непривилегированные
порты, но в пакете должно быть решение и для ставших стандартными
привилегированных портов.
Comment 7 Dmitry V. Levin 2005-10-27 03:15:14 MSD
Created attachment 1217 [details]
dhcp-3.0.3-alt1.nosrc.rpm

Понижение прав в два этапа.  В таком виде должен работать и failover.
Comment 8 Alex Moskalenko 2005-10-27 09:39:25 MSD
> Понижение прав в два этапа.  В таком виде должен работать и failover. 
 
Попробую, спасибо. 
 
Кстати, в мастере 2.4 ситуация аналогичная. Ее б тоже поправить... 
Comment 9 Dmitry V. Levin 2005-11-01 03:29:11 MSK
Должно быть исправлено в dhcp-3.0.3-alt1.

Но вы всё-таки проверьте.