summaryrefslogtreecommitdiffstats
path: root/sys/net/rtsock.c
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2017-03-02 09:37:04 +0000
committermpi <mpi@openbsd.org>2017-03-02 09:37:04 +0000
commit9a06d9a98f77af3837cf29fc658e6507f47d5bda (patch)
tree7c59740b7a0cf08d78e43462b0977b7f5b434072 /sys/net/rtsock.c
parentclose ftp(1)'s output file to avoid leaking one FD per request. (diff)
downloadwireguard-openbsd-9a06d9a98f77af3837cf29fc658e6507f47d5bda.tar.xz
wireguard-openbsd-9a06d9a98f77af3837cf29fc658e6507f47d5bda.zip
Fix a rtentry leak in error path.
ok bluhm@
Diffstat (limited to 'sys/net/rtsock.c')
-rw-r--r--sys/net/rtsock.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index fdba738655d..89c6a0bef0d 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtsock.c,v 1.224 2017/03/02 08:58:24 mpi Exp $ */
+/* $OpenBSD: rtsock.c,v 1.225 2017/03/02 09:37:04 mpi Exp $ */
/* $NetBSD: rtsock.c,v 1.18 1996/03/29 00:32:10 cgd Exp $ */
/*
@@ -943,20 +943,15 @@ change:
seq = rtm->rtm_seq;
free(rtm, M_RTABLE, 0);
rtm = rt_report(rt, type, seq, tableid);
+flush:
+ rtfree(rt);
if (rtm == NULL) {
error = ENOBUFS;
goto fail;
- }
-
-flush:
- if (rt)
- rtfree(rt);
- if (rtm) {
- if (error)
- rtm->rtm_errno = error;
- else {
- rtm->rtm_flags |= RTF_DONE;
- }
+ } else if (error) {
+ rtm->rtm_errno = error;
+ } else {
+ rtm->rtm_flags |= RTF_DONE;
}
/*