diff options
| author | 2017-03-02 09:37:04 +0000 | |
|---|---|---|
| committer | 2017-03-02 09:37:04 +0000 | |
| commit | 9a06d9a98f77af3837cf29fc658e6507f47d5bda (patch) | |
| tree | 7c59740b7a0cf08d78e43462b0977b7f5b434072 /sys/net/rtsock.c | |
| parent | close ftp(1)'s output file to avoid leaking one FD per request. (diff) | |
| download | wireguard-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.c | 19 |
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; } /* |
