diff options
author | bz <bz@FreeBSD.org> | 2012-01-24 13:57:30 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2012-01-24 13:57:30 +0000 |
commit | e59c01b14f52764214c109603e8dd533dacef5da (patch) | |
tree | b038d7754985dc492e6e085ef1f8e6f8d9e56582 /sys/netinet6/in6.c | |
parent | 4c40db42c1a5b54d686ee3a9f6d3835a5aec23b8 (diff) | |
download | FreeBSD-src-e59c01b14f52764214c109603e8dd533dacef5da.zip FreeBSD-src-e59c01b14f52764214c109603e8dd533dacef5da.tar.gz |
Plug a possible ifa_ref leak in case of premature return from in6_purgeaddr().
Reviewed by: rwatson
MFC after: 3 days
Diffstat (limited to 'sys/netinet6/in6.c')
-rw-r--r-- | sys/netinet6/in6.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index bde3db5..cf5eb35 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -1477,6 +1477,8 @@ in6_purgeaddr(struct ifaddr *ifa) } cleanup: + if (ifa0 != NULL) + ifa_free(ifa0); plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL); /* XXX */ if ((ia->ia_flags & IFA_ROUTE) && plen == 128) { @@ -1501,8 +1503,6 @@ cleanup: return; ia->ia_flags &= ~IFA_ROUTE; } - if (ifa0 != NULL) - ifa_free(ifa0); in6_unlink_ifa(ia, ifp); } |