Bug 8346 - DHCPD crashes when failover is used
: DHCPD crashes when failover is used
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/dhcp-server)
: unstable
: all Linux
: P2 critical
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-10-26 14:43 by
Modified: 2006-08-25 16:06 (History)


Attachments
патч на dhcp-3.0.1rc14-owl-alt-drop_priv.patch (2.09 KB, patch)
2005-10-26 15:16, Alex Moskalenko
no flags Details | Diff
dhcp-3.0.3-owl-alt-drop_priv.patch (10.66 KB, patch)
2005-10-26 22:52, 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, Dmitry V. Levin
no flags Details


Note

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


Description From 2005-10-26 14:43:08
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 From 2005-10-26 15:16:56 -------
Created an attachment (id=1215) [details]
патч на dhcp-3.0.1rc14-owl-alt-drop_priv.patch
------- Comment #2 From 2005-10-26 20:57:21 -------
Reassigned to maintainer.
------- Comment #3 From 2005-10-26 22:52:02 -------
Created an attachment (id=1216) [details]
dhcp-3.0.3-owl-alt-drop_priv.patch

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

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

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

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

Понижение прав в два этапа.  В таком виде должен работать и failover.
------- Comment #8 From 2005-10-27 09:39:25 -------
> Понижение прав в два этапа.  В таком виде должен работать и failover. 

Попробую, спасибо. 

Кстати, в мастере 2.4 ситуация аналогичная. Ее б тоже поправить... 
------- Comment #9 From 2005-11-01 03:29:11 -------
Должно быть исправлено в dhcp-3.0.3-alt1.

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