diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2008-07-29 21:46:28 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2008-07-29 21:46:28 +0000 |
commit | a3961b22d8c41566431b649a17e4b6b9cf7b1258 (patch) | |
tree | 4a22b0ca133b4838bfb6bf6aa4788a64648f121d /sys/netinet | |
parent | d18b20e90c2d9fb1af97ff6caee7f6f7eec525a4 (diff) |
when detaching pcbs, also free the v6 output options so that we do not
leak kernel memory for every closed v6 descriptor with certain options set
ok otto jsing todd claudio
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/in_pcb.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index 87d0e96acb3..c7339429059 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: in_pcb.c,v 1.101 2008/07/09 20:20:45 djm Exp $ */ +/* $OpenBSD: in_pcb.c,v 1.102 2008/07/29 21:46:27 deraadt Exp $ */ /* $NetBSD: in_pcb.c,v 1.25 1996/02/13 23:41:53 christos Exp $ */ /* @@ -480,9 +480,10 @@ in_pcbdetach(v) if (inp->inp_route.ro_rt) rtfree(inp->inp_route.ro_rt); #ifdef INET6 - if (inp->inp_flags & INP_IPV6) + if (inp->inp_flags & INP_IPV6) { + ip6_freepcbopts(inp->inp_outputopts6); ip6_freemoptions(inp->inp_moptions6); - else + } else #endif ip_freemoptions(inp->inp_moptions); #ifdef IPSEC |