summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2025-07-11 13:21:34 +0100
committerDaniel P. Berrangé <berrange@redhat.com>2025-10-24 16:36:48 +0100
commit3b3257b00fd256b8704db13373f4fa9c8bc40342 (patch)
tree8dc8a81097174a95aedf06e14c8756370cc3810f /crypto
parent3995fc238e0599e0417ba958ffc5c7a609e82a7f (diff)
downloadqemu-3b3257b00fd256b8704db13373f4fa9c8bc40342.tar.gz
qemu-3b3257b00fd256b8704db13373f4fa9c8bc40342.zip
crypto: switch to newer gnutls API for distinguished name
The new API automatically allocates the right amount of memory to hold the distinguished name, avoiding the need to loop and realloc. Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/tlssession.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/crypto/tlssession.c b/crypto/tlssession.c
index 8c0bf457ad..92fe4f0380 100644
--- a/crypto/tlssession.c
+++ b/crypto/tlssession.c
@@ -409,20 +409,14 @@ qcrypto_tls_session_check_certificate(QCryptoTLSSession *session,
}
if (i == 0) {
- size_t dnameSize = 1024;
- session->peername = g_malloc(dnameSize);
- requery:
- ret = gnutls_x509_crt_get_dn(cert, session->peername, &dnameSize);
+ gnutls_datum_t dname = {};
+ ret = gnutls_x509_crt_get_dn2(cert, &dname);
if (ret < 0) {
- if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) {
- session->peername = g_realloc(session->peername,
- dnameSize);
- goto requery;
- }
error_setg(errp, "Cannot get client distinguished name: %s",
gnutls_strerror(ret));
goto error;
}
+ session->peername = (char *)g_steal_pointer(&dname.data);
if (session->authzid) {
bool allow;