diff options
author | green <green@FreeBSD.org> | 2000-03-22 02:27:30 +0000 |
---|---|---|
committer | green <green@FreeBSD.org> | 2000-03-22 02:27:30 +0000 |
commit | 08e4f0700238abdec48bc342149c006d102636e5 (patch) | |
tree | 097af3db0391becae99a2ad4df9ca0212b7af1f0 /sys | |
parent | c6413e4804e4a5a3c117398f0bfc6e9da49303e8 (diff) | |
download | FreeBSD-src-08e4f0700238abdec48bc342149c006d102636e5.zip FreeBSD-src-08e4f0700238abdec48bc342149c006d102636e5.tar.gz |
in6_pcb.c:
Remove a bogus (redundant, just weird, etc.) key_freeso(so).
There are no consumers of it now, nor does it seem there
ever will be.
in6?_pcb.c:
Add an if (inp->in6?p_sp != NULL) before the call to
ipsec[46]_delete_pcbpolicy(inp). In low-memory conditions
this can cause a crash because in6?_sp can be NULL...
Diffstat (limited to 'sys')
-rw-r--r-- | sys/netinet/in_pcb.c | 3 | ||||
-rw-r--r-- | sys/netinet6/in6_pcb.c | 5 |
2 files changed, 4 insertions, 4 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index 2ac79ef..020987e 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -527,7 +527,8 @@ in_pcbdetach(inp) struct inpcbinfo *ipi = inp->inp_pcbinfo; #ifdef IPSEC - ipsec4_delete_pcbpolicy(inp); + if (inp->inp_sp != NULL) + ipsec4_delete_pcbpolicy(inp); #endif /*IPSEC*/ inp->inp_gencnt = ++ipi->ipi_gencnt; in_pcbremlists(inp); diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c index e8e7c16..341260a 100644 --- a/sys/netinet6/in6_pcb.c +++ b/sys/netinet6/in6_pcb.c @@ -719,9 +719,8 @@ in6_pcbdetach(inp) struct inpcbinfo *ipi = inp->inp_pcbinfo; #ifdef IPSEC - if (sotoinpcb(so) != 0) - key_freeso(so); - ipsec6_delete_pcbpolicy(inp); + if (inp->in6p_sp != NULL) + ipsec6_delete_pcbpolicy(inp); #endif /* IPSEC */ inp->inp_gencnt = ++ipi->ipi_gencnt; in_pcbremlists(inp); |