summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2023-05-24 09:15:14 +0000
committertb <>2023-05-24 09:15:14 +0000
commit9c79756c47801e50fdbf7b07b7e6ea1dfad2779b (patch)
treefcd81828bbb8b8ef794acaddd3190486bb559ad9
parent61c81a83de1329c6eec47a61f17e68b7c5a335f9 (diff)
downloadopenbsd-9c79756c47801e50fdbf7b07b7e6ea1dfad2779b.tar.gz
openbsd-9c79756c47801e50fdbf7b07b7e6ea1dfad2779b.tar.bz2
openbsd-9c79756c47801e50fdbf7b07b7e6ea1dfad2779b.zip
Copy the verify param hostflags independently of the host list
Without this, hostflags set on the SSL_CTX would not propagate to newly created SSL. This is surprising behavior that was changed in OpenSSL 1.1 by Christian Heimes after the issue was flagged by Quentin Pradet: https://bugs.python.org/issue43522 This is a version of the fix that landed in OpenSSL. There used to be a workaround in place in urllib3, but that was removed at some point. We haven't fixed this earlier since it wasn't reported. It only showed up after recent fallout of extraordinarily strict library checking in urllib3 coming from their own interpretation of the implications of PEP 644. ok jsing
-rw-r--r--src/lib/libcrypto/x509/x509_vpm.c7
-rw-r--r--src/regress/lib/libssl/unit/Makefile4
2 files changed, 5 insertions, 6 deletions
diff --git a/src/lib/libcrypto/x509/x509_vpm.c b/src/lib/libcrypto/x509/x509_vpm.c
index 2110787a5f..5c8c09e9fc 100644
--- a/src/lib/libcrypto/x509/x509_vpm.c
+++ b/src/lib/libcrypto/x509/x509_vpm.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_vpm.c,v 1.38 2023/05/24 08:46:01 tb Exp $ */ 1/* $OpenBSD: x509_vpm.c,v 1.39 2023/05/24 09:15:14 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2004. 3 * project 2004.
4 */ 4 */
@@ -326,7 +326,9 @@ X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *dest, const X509_VERIFY_PARAM *src)
326 return 0; 326 return 0;
327 } 327 }
328 328
329 /* Copy the host flags if and only if we're copying the host list */ 329 if (test_x509_verify_param_copy_id(hostflags, 0))
330 dest->id->hostflags = id->hostflags;
331
330 if (test_x509_verify_param_copy_id(hosts, NULL)) { 332 if (test_x509_verify_param_copy_id(hosts, NULL)) {
331 if (dest->id->hosts) { 333 if (dest->id->hosts) {
332 sk_OPENSSL_STRING_pop_free(dest->id->hosts, str_free); 334 sk_OPENSSL_STRING_pop_free(dest->id->hosts, str_free);
@@ -337,7 +339,6 @@ X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *dest, const X509_VERIFY_PARAM *src)
337 sk_deep_copy(id->hosts, strdup, str_free); 339 sk_deep_copy(id->hosts, strdup, str_free);
338 if (dest->id->hosts == NULL) 340 if (dest->id->hosts == NULL)
339 return 0; 341 return 0;
340 dest->id->hostflags = id->hostflags;
341 } 342 }
342 } 343 }
343 344
diff --git a/src/regress/lib/libssl/unit/Makefile b/src/regress/lib/libssl/unit/Makefile
index 413307b7a0..6a925069ca 100644
--- a/src/regress/lib/libssl/unit/Makefile
+++ b/src/regress/lib/libssl/unit/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.15 2023/05/24 08:54:59 tb Exp $ 1# $OpenBSD: Makefile,v 1.16 2023/05/24 09:15:14 tb Exp $
2 2
3PROGS += cipher_list 3PROGS += cipher_list
4PROGS += ssl_get_shared_ciphers 4PROGS += ssl_get_shared_ciphers
@@ -18,6 +18,4 @@ CFLAGS+= -I${.CURDIR}/../../../../lib/libssl
18 18
19LDADD_ssl_verify_param = ${LIBSSL} ${CRYPTO_INT} 19LDADD_ssl_verify_param = ${LIBSSL} ${CRYPTO_INT}
20 20
21REGRESS_EXPECTED_FAILURES+= run-regress-ssl_verify_param
22
23.include <bsd.regress.mk> 21.include <bsd.regress.mk>