diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2015-03-14 02:22:10 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2015-03-14 02:22:10 +0000 |
commit | f652b362e18f1a5bbd456fdfbe5f3fa40e645938 (patch) | |
tree | 6ea3e4aa4850e4c944b277be8aed326367f9c84f /usr.sbin/ospfd/ospfd.c | |
parent | 135c8122311da1b7ed10aa8e4ce010732352c022 (diff) |
When removing interfaces in the RDE we also need to remove all the RDE
neighbors that are part of that interface or we open us up to use after
free situations like the one found by sthen@.
Diff makes sense sthen@
Diffstat (limited to 'usr.sbin/ospfd/ospfd.c')
-rw-r--r-- | usr.sbin/ospfd/ospfd.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/usr.sbin/ospfd/ospfd.c b/usr.sbin/ospfd/ospfd.c index 39ee9d67db7..48707cc752f 100644 --- a/usr.sbin/ospfd/ospfd.c +++ b/usr.sbin/ospfd/ospfd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ospfd.c,v 1.83 2015/02/10 05:24:48 claudio Exp $ */ +/* $OpenBSD: ospfd.c,v 1.84 2015/03/14 02:22:09 claudio Exp $ */ /* * Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org> @@ -821,6 +821,8 @@ merge_interfaces(struct area *a, struct area *xa) i->name); if (ospfd_process == PROC_OSPF_ENGINE) if_fsm(i, IF_EVT_DOWN); + else if (ospfd_process == PROC_RDE_ENGINE) + rde_nbr_iface_del(i); LIST_REMOVE(i, entry); if_del(i); } |