[PATCH] tlshd: fix keyring cert retrieval
Scott Mayhew <[email protected]> Fri, 1 May 2026 15:58:56 -0400
| Newsgroups | dev.linux.lists.kernel-tls-handshake,org.kernel.vger.linux-nfs |
|---|---|
| Message-ID | <[email protected]> |
The code that gets certs from keyrings currently only gets RSA certs, so we need to zero out the PQ certs length fields when a keyring is used. Otherwise the retrieval callback will look in the wrong offset in the tlshd_certs list. Reported-by: Sagi Grimberg <[email protected]> Fixes: facd084 ("tlshd: Client-side dual certificate support") Fixes: 14f5349 ("tlshd: Server-side dual certificate support") Signed-off-by: Scott Mayhew <[email protected]> --- src/tlshd/client.c | 4 +++- src/tlshd/server.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/tlshd/client.c b/src/tlshd/client.c index 2664ffb..f291ee5 100644 --- a/src/tlshd/client.c +++ b/src/tlshd/client.c @@ -195,9 +195,11 @@ static gnutls_pk_algorithm_t tlshd_pq_pkalg = GNUTLS_PK_UNKNOWN; */ static bool tlshd_x509_client_get_certs(struct tlshd_handshake_parms *parms) { - if (parms->x509_cert != TLS_NO_CERT) + if (parms->x509_cert != TLS_NO_CERT) { + tlshd_pq_certs_len = 0; return tlshd_keyring_get_certs(parms->x509_cert, tlshd_certs, &tlshd_certs_len); + } return tlshd_config_get_certs(PEER_TYPE_CLIENT, tlshd_certs, &tlshd_pq_certs_len, &tlshd_certs_len, &tlshd_pq_pkalg); diff --git a/src/tlshd/server.c b/src/tlshd/server.c index 8e0f192..e8fe5c8 100644 --- a/src/tlshd/server.c +++ b/src/tlshd/server.c @@ -92,10 +92,12 @@ static gnutls_pk_algorithm_t tlshd_server_pq_pkalg = GNUTLS_PK_UNKNOWN; */ static bool tlshd_x509_server_get_certs(struct tlshd_handshake_parms *parms) { - if (parms->x509_cert != TLS_NO_CERT) + if (parms->x509_cert != TLS_NO_CERT) { + tlshd_server_pq_certs_len = 0; return tlshd_keyring_get_certs(parms->x509_cert, tlshd_server_certs, &tlshd_server_certs_len); + } return tlshd_config_get_certs(PEER_TYPE_SERVER, tlshd_server_certs, &tlshd_server_pq_certs_len, &tlshd_server_certs_len, -- 2.54.0