summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/ssl_ciph.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c
index 664ff5456b..08ddc86c3c 100644
--- a/src/lib/libssl/ssl_ciph.c
+++ b/src/lib/libssl/ssl_ciph.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_ciph.c,v 1.113 2020/04/09 17:54:38 jsing Exp $ */ 1/* $OpenBSD: ssl_ciph.c,v 1.114 2020/04/17 17:26:00 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1171,6 +1171,7 @@ ssl_create_cipher_list(const SSL_METHOD *ssl_method,
1171 CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr; 1171 CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr;
1172 const SSL_CIPHER **ca_list = NULL; 1172 const SSL_CIPHER **ca_list = NULL;
1173 int tls13_seen = 0; 1173 int tls13_seen = 0;
1174 int active;
1174 1175
1175 /* 1176 /*
1176 * Return with error if nothing to do. 1177 * Return with error if nothing to do.
@@ -1320,13 +1321,20 @@ ssl_create_cipher_list(const SSL_METHOD *ssl_method,
1320 * If the rule string did not contain any references to TLSv1.3, 1321 * If the rule string did not contain any references to TLSv1.3,
1321 * include inactive TLSv1.3 cipher suites. This avoids attempts to 1322 * include inactive TLSv1.3 cipher suites. This avoids attempts to
1322 * use TLSv1.3 with an older rule string that does not include 1323 * use TLSv1.3 with an older rule string that does not include
1323 * TLSv1.3 cipher suites. 1324 * TLSv1.3 cipher suites. If the rule string resulted in no active
1325 * cipher suites then we return an empty stack.
1324 */ 1326 */
1327 active = 0;
1325 for (curr = head; curr != NULL; curr = curr->next) { 1328 for (curr = head; curr != NULL; curr = curr->next) {
1326 if (curr->active || 1329 if (curr->active ||
1327 (!tls13_seen && curr->cipher->algorithm_ssl == SSL_TLSV1_3)) 1330 (!tls13_seen && curr->cipher->algorithm_ssl == SSL_TLSV1_3))
1328 sk_SSL_CIPHER_push(cipherstack, curr->cipher); 1331 sk_SSL_CIPHER_push(cipherstack, curr->cipher);
1332 if (curr->active)
1333 active++;
1329 } 1334 }
1335 if (active == 0)
1336 sk_SSL_CIPHER_zero(cipherstack);
1337
1330 free(co_list); /* Not needed any longer */ 1338 free(co_list); /* Not needed any longer */
1331 1339
1332 tmp_cipher_list = sk_SSL_CIPHER_dup(cipherstack); 1340 tmp_cipher_list = sk_SSL_CIPHER_dup(cipherstack);