38 lines
1.6 KiB
Diff
38 lines
1.6 KiB
Diff
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 5cb5bba..5294ec7 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
|
|
@@ -253,14 +253,15 @@ JNIEXPORT jlong JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_init
|
|
static int check_update_max_output_len(EVP_CIPHER_CTX *context, int input_len,
|
|
int max_output_len)
|
|
{
|
|
- if (context->flags & EVP_CIPH_NO_PADDING) {
|
|
+ unsigned long flags = EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(context));
|
|
+ if (flags & EVP_CIPH_NO_PADDING) {
|
|
if (max_output_len >= input_len) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
} else {
|
|
- int b = context->cipher->block_size;
|
|
- if (context->encrypt) {
|
|
+ int b = EVP_CIPHER_CTX_block_size(context);
|
|
+ if (EVP_CIPHER_CTX_encrypting(context)) {
|
|
if (max_output_len >= input_len + b - 1) {
|
|
return 1;
|
|
}
|
|
@@ -307,10 +308,11 @@ JNIEXPORT jint JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_update
|
|
static int check_doFinal_max_output_len(EVP_CIPHER_CTX *context,
|
|
int max_output_len)
|
|
{
|
|
- if (context->flags & EVP_CIPH_NO_PADDING) {
|
|
+ unsigned long flags = EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(context));
|
|
+ if (flags & EVP_CIPH_NO_PADDING) {
|
|
return 1;
|
|
} else {
|
|
- int b = context->cipher->block_size;
|
|
+ int b = EVP_CIPHER_CTX_block_size(context);
|
|
if (max_output_len >= b) {
|
|
return 1;
|
|
}
|