when detaching pcbs, also free the v6 output options so that we do not
authorderaadt <deraadt@openbsd.org>
Tue, 29 Jul 2008 21:46:27 +0000 (21:46 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 29 Jul 2008 21:46:27 +0000 (21:46 +0000)
leak kernel memory for every closed v6 descriptor with certain options set
ok otto jsing todd claudio

sys/netinet/in_pcb.c

index 87d0e96..c733942 100644 (file)
@@ -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