This is an automated email from the ASF dual-hosted git repository.
iwasakims pushed a commit to branch branch-3.4
in repository https://gitbox.apache.org/repos/asf/bigtop.git
The following commit(s) were added to refs/heads/branch-3.4 by this push:
new 9641296e9 BIGTOP-3974. Fix failure of loading OpenSSL by libhadoop.so
due to version mismatch. (#1341)
9641296e9 is described below
commit 9641296e9240eb4ddb2cdd08db9ff57e4a46b313
Author: Masatake Iwasaki <[email protected]>
AuthorDate: Wed Apr 23 20:02:48 2025 +0900
BIGTOP-3974. Fix failure of loading OpenSSL by libhadoop.so due to version
mismatch. (#1341)
(cherry picked from commit c2e69a9837df56685ca6b06ad1ce8de39fdf28d0)
---
.../src/common/hadoop/patch2-HADOOP-18583.diff | 115 +++++++++++++++++++++
1 file changed, 115 insertions(+)
diff --git a/bigtop-packages/src/common/hadoop/patch2-HADOOP-18583.diff
b/bigtop-packages/src/common/hadoop/patch2-HADOOP-18583.diff
new file mode 100644
index 000000000..77d273d5a
--- /dev/null
+++ b/bigtop-packages/src/common/hadoop/patch2-HADOOP-18583.diff
@@ -0,0 +1,115 @@
+commit acbb688da6831ebefff34cc9ab1e5c86012da875
+Author: Sebastian Klemke <[email protected]>
+Date: Thu Nov 7 19:14:13 2024 +0100
+
+ HADOOP-18583. Fix loading of OpenSSL 3.x symbols (#5256) (#7149)
+
+ Contributed by Sebastian Klemke
+
+ (cherry picked from commit f5cdb2658dd9ea3d3749db0ca40b0628f723ac20)
+
+diff --git
a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
+index abff7ea5f17f..f17169dec247 100644
+---
a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
++++
b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c
+@@ -24,6 +24,57 @@
+
+ #include "org_apache_hadoop_crypto_OpensslCipher.h"
+
++/*
++ # OpenSSL ABI Symbols
++
++ Available on all OpenSSL versions:
++
++ | Function | 1.0 | 1.1 | 3.0 |
++ |--------------------------------|-----|-----|-----|
++ | EVP_CIPHER_CTX_new | YES | YES | YES |
++ | EVP_CIPHER_CTX_free | YES | YES | YES |
++ | EVP_CIPHER_CTX_set_padding | YES | YES | YES |
++ | EVP_CIPHER_CTX_test_flags | YES | YES | YES |
++ | EVP_CipherInit_ex | YES | YES | YES |
++ | EVP_CipherUpdate | YES | YES | YES |
++ | EVP_CipherFinal_ex | YES | YES | YES |
++ | ENGINE_by_id | YES | YES | YES |
++ | ENGINE_free | YES | YES | YES |
++ | EVP_aes_256_ctr | YES | YES | YES |
++ | EVP_aes_128_ctr | YES | YES | YES |
++
++ Available on old versions:
++
++ | Function | 1.0 | 1.1 | 3.0 |
++ |--------------------------------|-----|-----|-----|
++ | EVP_CIPHER_CTX_cleanup | YES | --- | --- |
++ | EVP_CIPHER_CTX_init | YES | --- | --- |
++ | EVP_CIPHER_CTX_block_size | YES | YES | --- |
++ | EVP_CIPHER_CTX_encrypting | --- | YES | --- |
++
++ Available on new versions:
++
++ | Function | 1.0 | 1.1 | 3.0 |
++ |--------------------------------|-----|-----|-----|
++ | OPENSSL_init_crypto | --- | YES | YES |
++ | EVP_CIPHER_CTX_reset | --- | YES | YES |
++ | EVP_CIPHER_CTX_get_block_size | --- | --- | YES |
++ | EVP_CIPHER_CTX_is_encrypting | --- | --- | YES |
++
++ Optionally available on new versions:
++
++ | Function | 1.0 | 1.1 | 3.0 |
++ |--------------------------------|-----|-----|-----|
++ | EVP_sm4_ctr | --- | opt | opt |
++
++ Name changes:
++
++ | < 3.0 name | >= 3.0 name |
++ |----------------------------|--------------------------------|
++ | EVP_CIPHER_CTX_block_size | EVP_CIPHER_CTX_get_block_size |
++ | EVP_CIPHER_CTX_encrypting | EVP_CIPHER_CTX_is_encrypting |
++ */
++
+ #ifdef UNIX
+ static EVP_CIPHER_CTX * (*dlsym_EVP_CIPHER_CTX_new)(void);
+ static void (*dlsym_EVP_CIPHER_CTX_free)(EVP_CIPHER_CTX *);
+@@ -87,6 +138,15 @@ static __dlsym_EVP_aes_128_ctr dlsym_EVP_aes_128_ctr;
+ static HMODULE openssl;
+ #endif
+
++// names changed in OpenSSL 3 ABI - see History section in EVP_EncryptInit(3)
++#if OPENSSL_VERSION_NUMBER >= 0x30000000L
++#define CIPHER_CTX_BLOCK_SIZE "EVP_CIPHER_CTX_get_block_size"
++#define CIPHER_CTX_ENCRYPTING "EVP_CIPHER_CTX_is_encrypting"
++#else
++#define CIPHER_CTX_BLOCK_SIZE "EVP_CIPHER_CTX_block_size"
++#define CIPHER_CTX_ENCRYPTING "EVP_CIPHER_CTX_encrypting"
++#endif /* OPENSSL_VERSION_NUMBER >= 0x30000000L */
++
+ static void loadAesCtr(JNIEnv *env)
+ {
+ #ifdef UNIX
+@@ -142,10 +202,10 @@ JNIEXPORT void JNICALL
Java_org_apache_hadoop_crypto_OpensslCipher_initIDs
+ LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_test_flags, env, openssl, \
+ "EVP_CIPHER_CTX_test_flags");
+ LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_block_size, env, openssl, \
+- "EVP_CIPHER_CTX_block_size");
++ CIPHER_CTX_BLOCK_SIZE);
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_encrypting, env, openssl, \
+- "EVP_CIPHER_CTX_encrypting");
++ CIPHER_CTX_ENCRYPTING);
+ #endif
+ LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CipherInit_ex, env, openssl, \
+ "EVP_CipherInit_ex");
+@@ -173,11 +233,11 @@ JNIEXPORT void JNICALL
Java_org_apache_hadoop_crypto_OpensslCipher_initIDs
+ openssl, "EVP_CIPHER_CTX_test_flags");
+ LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_block_size, \
+ dlsym_EVP_CIPHER_CTX_block_size, env, \
+- openssl, "EVP_CIPHER_CTX_block_size");
++ openssl, CIPHER_CTX_BLOCK_SIZE);
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_encrypting, \
+ dlsym_EVP_CIPHER_CTX_encrypting, env, \
+- openssl, "EVP_CIPHER_CTX_encrypting");
++ openssl, CIPHER_CTX_ENCRYPTING);
+ #endif
+ LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CipherInit_ex, dlsym_EVP_CipherInit_ex, \
+ env, openssl, "EVP_CipherInit_ex");