summaryrefslogtreecommitdiffstats
path: root/usr.sbin/eigrpd
diff options
context:
space:
mode:
authorrenato <renato@openbsd.org>2016-06-05 17:19:18 +0000
committerrenato <renato@openbsd.org>2016-06-05 17:19:18 +0000
commitecf80ad540baf160e088c2c79661bf720e2058b0 (patch)
tree922ba2a8374a4f2e43e70602bb3065f085099da6 /usr.sbin/eigrpd
parentIn netstat, display correct counter for 'no basic MCS set' error. (diff)
downloadwireguard-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.c10
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();