#1140416 thrift: FTBFS with openssl 4.0

Package:
thrift
Source:
thrift
Submitter:
Sebastian Andrzej Siewior
Date:
2026-06-20 01:45:03 UTC
Severity:
normal
Tags:
#1140416#5
Date:
2026-06-20 01:44:03 UTC
From:
To:
OpenSSL 4.0 is in experimental. This package fails to build against it:
| libtool: compile:  x86_64-linux-gnu-g++ -std=c++11 -DHAVE_CONFIG_H -I/usr/include -I./src -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -pedantic -g -O2 -ffile-prefix-map=/build/reproducible-path/thrift-0.23.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c src/thrift/transport/TSSLSocket.cpp  -fPIC -DPIC -o src/thrift/transport/.libs/TSSLSocket.o
| src/thrift/transport/TSSLSocket.cpp: In constructor 'apache::thrift::transport::SSLContext::SSLContext(const apache::thrift::transport::SSLProtocol&)':
| src/thrift/transport/TSSLSocket.cpp:187:24: error: 'SSLv3_method' was not declared in this scope; did you mean 'SSLv23_method'?
|   187 |     ctx_ = SSL_CTX_new(SSLv3_method());
|       |                        ^~~~~~~~~~~~
|       |                        SSLv23_method
| src/thrift/transport/TSSLSocket.cpp:190:24: error: 'TLSv1_method' was not declared in this scope; did you mean 'TLS_method'?
|   190 |     ctx_ = SSL_CTX_new(TLSv1_method());
|       |                        ^~~~~~~~~~~~
|       |                        TLS_method
| src/thrift/transport/TSSLSocket.cpp:192:24: error: 'TLSv1_1_method' was not declared in this scope; did you mean 'TLS_method'?
|   192 |     ctx_ = SSL_CTX_new(TLSv1_1_method());
|       |                        ^~~~~~~~~~~~~~
|       |                        TLS_method
| src/thrift/transport/TSSLSocket.cpp:194:24: error: 'TLSv1_2_method' was not declared in this scope; did you mean 'TLS_method'?
|   194 |     ctx_ = SSL_CTX_new(TLSv1_2_method());
|       |                        ^~~~~~~~~~~~~~
|       |                        TLS_method
| src/thrift/transport/TSSLSocket.cpp: In member function 'virtual void apache::thrift::transport::TSSLSocket::authorize()':
| src/thrift/transport/TSSLSocket.cpp:766:27: error: 'ASN1_STRING_data' was not declared in this scope; did you mean 'ASN1_STRING_set0'?
|   766 |       char* data = (char*)ASN1_STRING_data(name->d.ia5);
|       |                           ^~~~~~~~~~~~~~~~
|       |                           ASN1_STRING_set0
| src/thrift/transport/TSSLSocket.cpp:792:42: error: invalid conversion from 'const X509_NAME*' {aka 'const X509_name_st*'} to 'X509_NAME*' {aka 'X509_name_st*'} [-fpermissive]
|   792 |   X509_NAME* name = X509_get_subject_name(cert);
|       |                     ~~~~~~~~~~~~~~~~~~~~~^~~~~~
|       |                                          |
|       |                                          const X509_NAME* {aka const X509_name_st*}
| src/thrift/transport/TSSLSocket.cpp:801:34: error: invalid conversion from 'const X509_NAME_ENTRY*' {aka 'const X509_name_entry_st*'} to 'X509_NAME_ENTRY*' {aka 'X509_name_entry_st*'} [-fpermissive]
|   801 |       entry = X509_NAME_get_entry(name, last);
|       |               ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
|       |                                  |
|       |                                  const X509_NAME_ENTRY* {aka const X509_name_entry_st*}
| src/thrift/transport/TSSLSocket.cpp:804:53: error: invalid conversion from 'const ASN1_STRING*' {aka 'const asn1_string_st*'} to 'ASN1_STRING*' {aka 'asn1_string_st*'} [-fpermissive]
|   804 |       ASN1_STRING* common = X509_NAME_ENTRY_get_data(entry);
|       |                             ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
|       |                                                     |
|       |                                                     const ASN1_STRING* {aka const asn1_string_st*}
| src/thrift/transport/TSSLSocket.cpp: At global scope:
| src/thrift/transport/TSSLSocket.cpp:111:13: warning: 'void apache::thrift::transport::dyn_destroy(CRYPTO_dynlock_value*, const char*, int)' defined but not used [-Wunused-function]
|   111 | static void dyn_destroy(struct CRYPTO_dynlock_value* lock, const char*, int) {
|       |             ^~~~~~~~~~~
| src/thrift/transport/TSSLSocket.cpp:101:13: warning: 'void apache::thrift::transport::dyn_lock(int, CRYPTO_dynlock_value*, const char*, int)' defined but not used [-Wunused-function]
|   101 | static void dyn_lock(int mode, struct CRYPTO_dynlock_value* lock, const char*, int) {
|       |             ^~~~~~~~
| src/thrift/transport/TSSLSocket.cpp:97:30: warning: 'CRYPTO_dynlock_value* apache::thrift::transport::dyn_create(const char*, int)' defined but not used [-Wunused-function]
|    97 | static CRYPTO_dynlock_value* dyn_create(const char*, int) {
|       |                              ^~~~~~~~~~
| src/thrift/transport/TSSLSocket.cpp:76:13: warning: 'void apache::thrift::transport::callbackLocking(int, int, const char*, int)' defined but not used [-Wunused-function]
|    76 | static void callbackLocking(int mode, int n, const char*, int) {
|       |             ^~~~~~~~~~~~~~~
| make[6]: *** [Makefile:1323: src/thrift/transport/TSSLSocket.lo] Error 1

Full buildlog
https://breakpoint.cc/openssl-rebuild/logs-4/attempted/thrift_0.23.0-3_amd64-2026-06-16T22:36:12Z

Sebastian