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