diff options
author | renato <renato@openbsd.org> | 2016-06-05 17:19:18 +0000 |
---|---|---|
committer | renato <renato@openbsd.org> | 2016-06-05 17:19:18 +0000 |
commit | ecf80ad540baf160e088c2c79661bf720e2058b0 (patch) | |
tree | 922ba2a8374a4f2e43e70602bb3065f085099da6 /usr.sbin/eigrpd | |
parent | In netstat, display correct counter for 'no basic MCS set' error. (diff) | |
download | wireguard-openbsd-ecf80ad540baf160e088c2c79661bf720e2058b0.tar.xz wireguard-openbsd-ecf80ad540baf160e088c2c79661bf720e2058b0.zip |
Fix potential SIGBUS in startup.
The fork+exec diff introduced this problem where we were indirectly
calling imsg_event_add() before initializing (event_set) iev_rde and
iev_eigrpe. Fix this by moving down both main_imsg_send_ipc_sockets()
and main_imsg_send_config(), after iev_rde and iev_eigrpe are
initialized.
benno@ reported this problem for the initial ospfd fork+exec attempt,
now fix eigrpd too.
ok deraadt
Diffstat (limited to 'usr.sbin/eigrpd')
-rw-r--r-- | usr.sbin/eigrpd/eigrpd.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/usr.sbin/eigrpd/eigrpd.c b/usr.sbin/eigrpd/eigrpd.c index 2f274664c8c..ec22c5fdac9 100644 --- a/usr.sbin/eigrpd/eigrpd.c +++ b/usr.sbin/eigrpd/eigrpd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: eigrpd.c,v 1.15 2016/06/05 03:36:41 renato Exp $ */ +/* $OpenBSD: eigrpd.c,v 1.16 2016/06/05 17:19:18 renato Exp $ */ /* * Copyright (c) 2015 Renato Westphal <renato@openbsd.org> @@ -265,10 +265,6 @@ main(int argc, char *argv[]) imsg_init(&iev_rde->ibuf, pipe_parent2rde[0]); iev_rde->handler = main_dispatch_rde; - if (main_imsg_send_ipc_sockets(&iev_eigrpe->ibuf, &iev_rde->ibuf)) - fatal("could not establish imsg links"); - main_imsg_send_config(eigrpd_conf); - /* setup event handler */ iev_eigrpe->events = EV_READ; event_set(&iev_eigrpe->ev, iev_eigrpe->ibuf.fd, iev_eigrpe->events, @@ -280,6 +276,10 @@ main(int argc, char *argv[]) iev_rde->handler, iev_rde); event_add(&iev_rde->ev, NULL); + if (main_imsg_send_ipc_sockets(&iev_eigrpe->ibuf, &iev_rde->ibuf)) + fatal("could not establish imsg links"); + main_imsg_send_config(eigrpd_conf); + /* notify eigrpe about existing interfaces and addresses */ kif_redistribute(); |