diff options
author | 2014-12-05 07:24:45 +0000 | |
---|---|---|
committer | 2014-12-05 07:24:45 +0000 | |
commit | d698ae006f4bf89316cd9843401a0b28f737202a (patch) | |
tree | b2ce168c392183abe85749966f43bade9ca3c832 | |
parent | Allow only root to use KERN_PROC_VMMAP until it is really proven safe. (diff) | |
download | wireguard-openbsd-d698ae006f4bf89316cd9843401a0b28f737202a.tar.xz wireguard-openbsd-d698ae006f4bf89316cd9843401a0b28f737202a.zip |
Specify correct number of iovecs when sending replies to the ikev2 proc
Crash reported and fix tested by Vincent Gross <dermiste at kilob ! yt>;
patch from Pedro Martelletto, thanks!
-rw-r--r-- | sbin/iked/ca.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sbin/iked/ca.c b/sbin/iked/ca.c index e43b58b9e53..fec5e8ff426 100644 --- a/sbin/iked/ca.c +++ b/sbin/iked/ca.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ca.c,v 1.31 2014/07/10 12:50:05 jsg Exp $ */ +/* $OpenBSD: ca.c,v 1.32 2014/12/05 07:24:45 mikeb Exp $ */ /* * Copyright (c) 2010-2013 Reyk Floeter <reyk@openbsd.org> @@ -534,7 +534,7 @@ ca_reload(struct iked *env) X509_OBJECT *xo; X509 *x509; DIR *dir; - int i, len, iovcnt = 2; + int i, len, iovcnt = 0; /* * Load CAs @@ -620,8 +620,10 @@ ca_reload(struct iked *env) env->sc_certreqtype = IKEV2_CERT_X509_CERT; iov[0].iov_base = &env->sc_certreqtype; iov[0].iov_len = sizeof(env->sc_certreqtype); + iovcnt++; iov[1].iov_base = ibuf_data(env->sc_certreq); iov[1].iov_len = ibuf_length(env->sc_certreq); + iovcnt++; log_debug("%s: loaded %zu ca certificate%s", __func__, ibuf_length(env->sc_certreq) / SHA_DIGEST_LENGTH, @@ -677,6 +679,8 @@ ca_reload(struct iked *env) iov[0].iov_base = &env->sc_certreqtype; iov[0].iov_len = sizeof(env->sc_certreqtype); + if (iovcnt == 0) + iovcnt++; (void)proc_composev_imsg(&env->sc_ps, PROC_IKEV2, -1, IMSG_CERTREQ, -1, iov, iovcnt); |