summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorremi <remi@openbsd.org>2019-12-11 21:04:59 +0000
committerremi <remi@openbsd.org>2019-12-11 21:04:59 +0000
commit5aeb3034111ee618a1dea6810da46c4aaca79efc (patch)
tree01b0831213ae6e6484933d56f6931e4d4bcb467d
parentMerge existing decls and decls introduced in rev 1.10 (diff)
downloadwireguard-openbsd-5aeb3034111ee618a1dea6810da46c4aaca79efc.tar.xz
wireguard-openbsd-5aeb3034111ee618a1dea6810da46c4aaca79efc.zip
Fix 2 memory leaks in error paths and a double-free (kroute_insert already
frees kr if it detects a duplicate). From Hiltjo Posthuma OK benno@
-rw-r--r--usr.sbin/ripd/kroute.c5
-rw-r--r--usr.sbin/ripd/ripe.c4
2 files changed, 5 insertions, 4 deletions
diff --git a/usr.sbin/ripd/kroute.c b/usr.sbin/ripd/kroute.c
index 6e7449e0909..635c74c0887 100644
--- a/usr.sbin/ripd/kroute.c
+++ b/usr.sbin/ripd/kroute.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kroute.c,v 1.33 2018/12/31 20:34:16 remi Exp $ */
+/* $OpenBSD: kroute.c,v 1.34 2019/12/11 21:04:59 remi Exp $ */
/*
* Copyright (c) 2004 Esben Norby <norby@openbsd.org>
@@ -183,8 +183,7 @@ kr_change_fib(struct kroute_node *kr, struct kroute *kroute, int action)
if (kroute_insert(kr) == -1) {
log_debug("kr_update_fib: cannot insert %s",
- inet_ntoa(kr->r.nexthop));
- free(kr);
+ inet_ntoa(kroute->nexthop));
}
} else
kr->r.nexthop.s_addr = kroute->nexthop.s_addr;
diff --git a/usr.sbin/ripd/ripe.c b/usr.sbin/ripd/ripe.c
index cbd9ded2499..87eb088228a 100644
--- a/usr.sbin/ripd/ripe.c
+++ b/usr.sbin/ripd/ripe.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ripe.c,v 1.24 2019/12/09 20:37:54 remi Exp $ */
+/* $OpenBSD: ripe.c,v 1.25 2019/12/11 21:04:59 remi Exp $ */
/*
* Copyright (c) 2006 Michele Marchetto <mydecay@openbeer.it>
@@ -351,6 +351,7 @@ ripe_dispatch_rde(int fd, short event, void *bula)
NULL) {
log_debug("unknown neighbor id %u",
imsg.hdr.peerid);
+ free(rr);
break;
}
add_entry(&nbr->rq_list, rr);
@@ -396,6 +397,7 @@ ripe_dispatch_rde(int fd, short event, void *bula)
if ((nbr = nbr_find_peerid(imsg.hdr.peerid)) == NULL) {
log_debug("unknown neighbor id %u",
imsg.hdr.peerid);
+ free(rr);
break;
}
add_entry(&nbr->rp_list, rr);