[
https://issues.apache.org/jira/browse/HADOOP-18583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17893783#comment-17893783
]
ASF GitHub Bot commented on HADOOP-18583:
-----------------------------------------
steveloughran commented on code in PR #5256:
URL: https://github.com/apache/hadoop/pull/5256#discussion_r1820642049
##########
hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/OpensslCipher.c:
##########
@@ -169,9 +169,19 @@ JNIEXPORT void JNICALL
Java_org_apache_hadoop_crypto_OpensslCipher_initIDs
"EVP_CIPHER_CTX_set_padding");
LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_test_flags, env, openssl, \
"EVP_CIPHER_CTX_test_flags");
+// name changed in OpenSSL 3 ABI - see History section in EVP_EncryptInit(3)
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_block_size, env, openssl, \
Review Comment:
let's have a single block for defining the string and then use
```
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
#define CTX_BLOCK_SIZE "EVP_CIPHER_CTX_get_block_size"
#define CTX_ENCRYPTING "EVP_CIPHER_CTX_is_encrypting"
...
#else
#define CTX_BLOCK_SIZE "EVP_CIPHER_CTX_block_size"
#define CTX_ENCRYPTING "EVP_CIPHER_CTX_encrypting"
...
#endif
LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_block_size, env, openssl,
CTX_BLOCK_SIZE);
```
Then the actual uses just refer to the macro definition as needed
1. makes things less complex
2. lines up for openssl 4 and any more changes.
> hadoop checknative fails to load openssl 3.x
> --------------------------------------------
>
> Key: HADOOP-18583
> URL: https://issues.apache.org/jira/browse/HADOOP-18583
> Project: Hadoop Common
> Issue Type: Bug
> Components: native
> Affects Versions: 3.3.4
> Reporter: Sebastian Klemke
> Priority: Major
> Labels: pull-request-available
> Attachments: 100-hadoop-3.3.4-openssl-3.patch
>
>
> After building Hadoop 3.3.4 from source on Ubuntu 22.04, `hadoop checknative`
> reports
> {code:java}
> $ hadoop checknative
> 2022-12-21 22:12:02,106 INFO bzip2.Bzip2Factory: Successfully loaded &
> initialized native-bzip2 library system-native
> 2022-12-21 22:12:02,107 INFO zlib.ZlibFactory: Successfully loaded &
> initialized native-zlib library
> 2022-12-21 22:12:02,130 INFO nativeio.NativeIO: The native code was built
> without PMDK support.
> Native library checking:
> hadoop: true /hadoop/lib/native/libhadoop.so.1.0.0
> zlib: true /lib/x86_64-linux-gnu/libz.so.1
> zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
> bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
> openssl: false EVP_CIPHER_CTX_block_size
> ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
> PMDK: false The native code was built without PMDK support.{code}
> The issue seems to be at least two symbols that were removed from ABI in
> OpenSSL 3.x releases:
> * EVP_CIPHER_CTX_block_size (new name: EVP_CIPHER_CTX_get_block_size)
> * EVP_CIPHER_CTX_encrypting (new name: EVP_CIPHER_CTX_is_encrypting)
> The attached patch [^100-hadoop-3.3.4-openssl-3.patch] works around the issue.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]