Skip to content

Commit 244a404

Browse files
scottmayhewchucklever
authored andcommitted
tlshd: fix keyring cert retrieval
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 <sagi@grimberg.me> Fixes: facd084 ("tlshd: Client-side dual certificate support") Fixes: 14f5349 ("tlshd: Server-side dual certificate support") Signed-off-by: Scott Mayhew <smayhew@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
1 parent c63c04b commit 244a404

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

src/tlshd/client.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,11 @@ static gnutls_pk_algorithm_t tlshd_pq_pkalg = GNUTLS_PK_UNKNOWN;
195195
*/
196196
static bool tlshd_x509_client_get_certs(struct tlshd_handshake_parms *parms)
197197
{
198-
if (parms->x509_cert != TLS_NO_CERT)
198+
if (parms->x509_cert != TLS_NO_CERT) {
199+
tlshd_pq_certs_len = 0;
199200
return tlshd_keyring_get_certs(parms->x509_cert, tlshd_certs,
200201
&tlshd_certs_len);
202+
}
201203
return tlshd_config_get_certs(PEER_TYPE_CLIENT, tlshd_certs,
202204
&tlshd_pq_certs_len, &tlshd_certs_len,
203205
&tlshd_pq_pkalg);

src/tlshd/server.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,12 @@ static gnutls_pk_algorithm_t tlshd_server_pq_pkalg = GNUTLS_PK_UNKNOWN;
9292
*/
9393
static bool tlshd_x509_server_get_certs(struct tlshd_handshake_parms *parms)
9494
{
95-
if (parms->x509_cert != TLS_NO_CERT)
95+
if (parms->x509_cert != TLS_NO_CERT) {
96+
tlshd_server_pq_certs_len = 0;
9697
return tlshd_keyring_get_certs(parms->x509_cert,
9798
tlshd_server_certs,
9899
&tlshd_server_certs_len);
100+
}
99101
return tlshd_config_get_certs(PEER_TYPE_SERVER, tlshd_server_certs,
100102
&tlshd_server_pq_certs_len,
101103
&tlshd_server_certs_len,

0 commit comments

Comments
 (0)