databases/mongodb: fix upcoming build failure
Backport OpenSSL 1.1 API codepath to the old embedded version of asio. This will avoid a build failure when SSL_CTX will become opaque looks good to jsing
This commit is contained in:
parent
c1bbcfa9d9
commit
8a13d1abf3
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: Makefile,v 1.40 2021/02/23 19:39:11 sthen Exp $
|
||||
# $OpenBSD: Makefile,v 1.41 2021/05/10 15:10:11 tb Exp $
|
||||
|
||||
PORTROACH = limitw:1,even
|
||||
USE_WXNEEDED = Yes
|
||||
@ -12,7 +12,7 @@ COMMENT = scalable, high-performance document-oriented database
|
||||
DISTNAME = mongodb-src-r3.2.22
|
||||
PKGNAME = ${DISTNAME:S/src-r//}
|
||||
CATEGORIES = databases
|
||||
REVISION = 1
|
||||
REVISION = 2
|
||||
|
||||
HOMEPAGE = https://www.mongodb.com/
|
||||
|
||||
|
@ -0,0 +1,116 @@
|
||||
$OpenBSD: patch-src_third_party_asio-asio-1-11-0_asio_include_asio_ssl_impl_context_ipp,v 1.1 2021/05/10 15:10:11 tb Exp $
|
||||
|
||||
Index: src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
|
||||
--- src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp.orig
|
||||
+++ src/third_party/asio-asio-1-11-0/asio/include/asio/ssl/impl/context.ipp
|
||||
@@ -192,13 +192,14 @@ context::~context()
|
||||
{
|
||||
if (handle_)
|
||||
{
|
||||
- if (handle_->default_passwd_callback_userdata)
|
||||
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
|
||||
+ if (cb_userdata)
|
||||
{
|
||||
detail::password_callback_base* callback =
|
||||
static_cast<detail::password_callback_base*>(
|
||||
- handle_->default_passwd_callback_userdata);
|
||||
+ cb_userdata);
|
||||
delete callback;
|
||||
- handle_->default_passwd_callback_userdata = 0;
|
||||
+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, 0);
|
||||
}
|
||||
|
||||
if (SSL_CTX_get_app_data(handle_))
|
||||
@@ -528,10 +529,12 @@ asio::error_code context::use_certificate_chain(
|
||||
bio_cleanup bio = { make_buffer_bio(chain) };
|
||||
if (bio.p)
|
||||
{
|
||||
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
|
||||
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
|
||||
x509_cleanup cert = {
|
||||
::PEM_read_bio_X509_AUX(bio.p, 0,
|
||||
- handle_->default_passwd_callback,
|
||||
- handle_->default_passwd_callback_userdata) };
|
||||
+ callback,
|
||||
+ cb_userdata) };
|
||||
if (!cert.p)
|
||||
{
|
||||
ec = asio::error_code(ERR_R_PEM_LIB,
|
||||
@@ -548,15 +551,11 @@ asio::error_code context::use_certificate_chain(
|
||||
return ec;
|
||||
}
|
||||
|
||||
- if (handle_->extra_certs)
|
||||
- {
|
||||
- ::sk_X509_pop_free(handle_->extra_certs, X509_free);
|
||||
- handle_->extra_certs = 0;
|
||||
- }
|
||||
+ ::SSL_CTX_clear_chain_certs(handle_);
|
||||
|
||||
while (X509* cacert = ::PEM_read_bio_X509(bio.p, 0,
|
||||
- handle_->default_passwd_callback,
|
||||
- handle_->default_passwd_callback_userdata))
|
||||
+ callback,
|
||||
+ cb_userdata))
|
||||
{
|
||||
if (!::SSL_CTX_add_extra_chain_cert(handle_, cacert))
|
||||
{
|
||||
@@ -621,6 +620,9 @@ asio::error_code context::use_private_key(
|
||||
{
|
||||
::ERR_clear_error();
|
||||
|
||||
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
|
||||
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
|
||||
+
|
||||
bio_cleanup bio = { make_buffer_bio(private_key) };
|
||||
if (bio.p)
|
||||
{
|
||||
@@ -632,8 +634,8 @@ asio::error_code context::use_private_key(
|
||||
break;
|
||||
case context_base::pem:
|
||||
evp_private_key.p = ::PEM_read_bio_PrivateKey(
|
||||
- bio.p, 0, handle_->default_passwd_callback,
|
||||
- handle_->default_passwd_callback_userdata);
|
||||
+ bio.p, 0, callback,
|
||||
+ cb_userdata);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
@@ -680,6 +682,9 @@ asio::error_code context::use_rsa_private_key(
|
||||
{
|
||||
::ERR_clear_error();
|
||||
|
||||
+ pem_password_cb* callback = ::SSL_CTX_get_default_passwd_cb(handle_);
|
||||
+ void* cb_userdata = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
|
||||
+
|
||||
bio_cleanup bio = { make_buffer_bio(private_key) };
|
||||
if (bio.p)
|
||||
{
|
||||
@@ -691,8 +696,8 @@ asio::error_code context::use_rsa_private_key(
|
||||
break;
|
||||
case context_base::pem:
|
||||
rsa_private_key.p = ::PEM_read_bio_RSAPrivateKey(
|
||||
- bio.p, 0, handle_->default_passwd_callback,
|
||||
- handle_->default_passwd_callback_userdata);
|
||||
+ bio.p, 0, callback,
|
||||
+ cb_userdata);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
@@ -911,11 +916,12 @@ int context::verify_callback_function(int preverified,
|
||||
asio::error_code context::do_set_password_callback(
|
||||
detail::password_callback_base* callback, asio::error_code& ec)
|
||||
{
|
||||
- if (handle_->default_passwd_callback_userdata)
|
||||
- delete static_cast<detail::password_callback_base*>(
|
||||
- handle_->default_passwd_callback_userdata);
|
||||
+ void* old_callback = ::SSL_CTX_get_default_passwd_cb_userdata(handle_);
|
||||
+ ::SSL_CTX_set_default_passwd_cb_userdata(handle_, callback);
|
||||
|
||||
- handle_->default_passwd_callback_userdata = callback;
|
||||
+ if (old_callback)
|
||||
+ delete static_cast<detail::password_callback_base*>(
|
||||
+ old_callback);
|
||||
|
||||
SSL_CTX_set_default_passwd_cb(handle_, &context::password_callback_function);
|
||||
|
Loading…
Reference in New Issue
Block a user