Apply by doing:
cd /usr
patch -p0 < 001_pfkey.patch
And then rebuild your kernel.
Index: src/sys/net/pfkey.c
diff -u src/sys/net/pfkey.c:1.4 src/sys/net/pfkey.c:1.5
--- src/sys/net/pfkey.c:1.4 Sun Apr 11 13:41:35 1999
+++ src/sys/net/pfkey.c Mon May 3 16:30:27 1999
@@ -117,22 +117,36 @@
pfkey_output(struct mbuf *mbuf, struct socket *socket)
{
void *message;
+ int error = 0;
#if DIAGNOSTIC
- if (!mbuf || !(mbuf->m_flags & M_PKTHDR))
- return EINVAL;
+ if (!mbuf || !(mbuf->m_flags & M_PKTHDR)) {
+ error = EINVAL;
+ goto ret;
+ }
#endif /* DIAGNOSTIC */
- if (mbuf->m_pkthdr.len > PFKEY_MSG_MAXSZ)
- return EMSGSIZE;
+ if (mbuf->m_pkthdr.len > PFKEY_MSG_MAXSZ) {
+ error = EMSGSIZE;
+ goto ret;
+ }
if (!(message = malloc((unsigned long) mbuf->m_pkthdr.len, M_TEMP,
- M_DONTWAIT)))
- return ENOMEM;
+ M_DONTWAIT))) {
+ error = ENOMEM;
+ goto ret;
+ }
m_copydata(mbuf, 0, mbuf->m_pkthdr.len, message);
- return pfkey_versions[socket->so_proto->pr_protocol]->send(socket, message, mbuf->m_pkthdr.len);
+ error =
+ pfkey_versions[socket->so_proto->pr_protocol]->send(socket, message,
+ mbuf->m_pkthdr.len);
+
+ ret:
+ if (mbuf)
+ m_freem (mbuf);
+ return error;
}
static int