summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2022-06-28 14:51:37 +0000
committertb <>2022-06-28 14:51:37 +0000
commit5ae9e5262383f3db9ff8710204f4c96843613428 (patch)
treeded4749ed328d4d4fdf3d5942daf83b1612e4676 /src
parent002a3be4126d63276d3ae87ae634a14e6f0efc5b (diff)
downloadopenbsd-5ae9e5262383f3db9ff8710204f4c96843613428.tar.gz
openbsd-5ae9e5262383f3db9ff8710204f4c96843613428.tar.bz2
openbsd-5ae9e5262383f3db9ff8710204f4c96843613428.zip
Free ciphers before assigning to them
While this is not a leak currently, it definitely looks like one. Pointed out by jsing on review of a diff that touched the vicinity a while ago. ok jsing
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_srvr.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c
index 35f3d585ac..20660cbf27 100644
--- a/src/lib/libssl/ssl_srvr.c
+++ b/src/lib/libssl/ssl_srvr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_srvr.c,v 1.142 2022/06/07 17:14:17 tb Exp $ */ 1/* $OpenBSD: ssl_srvr.c,v 1.143 2022/06/28 14:51:37 tb 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 *
@@ -1074,6 +1074,7 @@ ssl3_get_client_hello(SSL *s)
1074 s->internal->hit = 1; 1074 s->internal->hit = 1;
1075 s->session->verify_result = X509_V_OK; 1075 s->session->verify_result = X509_V_OK;
1076 1076
1077 sk_SSL_CIPHER_free(s->session->ciphers);
1077 s->session->ciphers = ciphers; 1078 s->session->ciphers = ciphers;
1078 ciphers = NULL; 1079 ciphers = NULL;
1079 1080
@@ -1098,18 +1099,17 @@ ssl3_get_client_hello(SSL *s)
1098 */ 1099 */
1099 1100
1100 if (!s->internal->hit) { 1101 if (!s->internal->hit) {
1101 sk_SSL_CIPHER_free(s->session->ciphers);
1102 s->session->ciphers = ciphers;
1103 if (ciphers == NULL) { 1102 if (ciphers == NULL) {
1104 al = SSL_AD_ILLEGAL_PARAMETER; 1103 al = SSL_AD_ILLEGAL_PARAMETER;
1105 SSLerror(s, SSL_R_NO_CIPHERS_PASSED); 1104 SSLerror(s, SSL_R_NO_CIPHERS_PASSED);
1106 goto fatal_err; 1105 goto fatal_err;
1107 } 1106 }
1107 sk_SSL_CIPHER_free(s->session->ciphers);
1108 s->session->ciphers = ciphers;
1108 ciphers = NULL; 1109 ciphers = NULL;
1109 c = ssl3_choose_cipher(s, s->session->ciphers,
1110 SSL_get_ciphers(s));
1111 1110
1112 if (c == NULL) { 1111 if ((c = ssl3_choose_cipher(s, s->session->ciphers,
1112 SSL_get_ciphers(s))) == NULL) {
1113 al = SSL_AD_HANDSHAKE_FAILURE; 1113 al = SSL_AD_HANDSHAKE_FAILURE;
1114 SSLerror(s, SSL_R_NO_SHARED_CIPHER); 1114 SSLerror(s, SSL_R_NO_SHARED_CIPHER);
1115 goto fatal_err; 1115 goto fatal_err;