summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorDaniel P. Berrangé2022-03-04 20:35:59 +0100
committerEric Blake2022-03-07 22:58:42 +0100
commitd41997e465c533f3a29e0d0bb52cfcad696e2b2d (patch)
tree220816944d36b23a0c4dc5c4b5ccdc0c8e555225 /crypto
parentMerge remote-tracking branch 'remotes/hreitz-gitlab/tags/pull-block-2022-03-0... (diff)
downloadqemu-d41997e465c533f3a29e0d0bb52cfcad696e2b2d.tar.gz
qemu-d41997e465c533f3a29e0d0bb52cfcad696e2b2d.tar.xz
qemu-d41997e465c533f3a29e0d0bb52cfcad696e2b2d.zip
crypto: mandate a hostname when checking x509 creds on a client
Currently the TLS session object assumes that the caller will always provide a hostname when using x509 creds on a client endpoint. This relies on the caller to detect and report an error if the user has configured QEMU with x509 credentials on a UNIX socket. The migration code has such a check, but it is too broad, reporting an error when the user has configured QEMU with PSK credentials on a UNIX socket, where hostnames are irrelevant. Putting the check into the TLS session object credentials validation code ensures we report errors in only the scenario that matters. Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20220304193610.3293146-2-berrange@redhat.com> Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/tlssession.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/crypto/tlssession.c b/crypto/tlssession.c
index a8db8c76d1..b302d835d2 100644
--- a/crypto/tlssession.c
+++ b/crypto/tlssession.c
@@ -373,6 +373,12 @@ qcrypto_tls_session_check_certificate(QCryptoTLSSession *session,
session->hostname);
goto error;
}
+ } else {
+ if (session->creds->endpoint ==
+ QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT) {
+ error_setg(errp, "No hostname for certificate validation");
+ goto error;
+ }
}
}