summaryrefslogtreecommitdiff
path: root/sys/netinet
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2008-07-29 21:46:28 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2008-07-29 21:46:28 +0000
commita3961b22d8c41566431b649a17e4b6b9cf7b1258 (patch)
tree4a22b0ca133b4838bfb6bf6aa4788a64648f121d /sys/netinet
parentd18b20e90c2d9fb1af97ff6caee7f6f7eec525a4 (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.c7
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