From 7f8d9b757f3e5abaa780ee109da3c992071f8513 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Fri, 26 Aug 2016 09:59:55 +0200 Subject: [PATCH] Improve the definition of STITCHED_CALL in e_rc4_hmac_md5.c The definition of STITCHED_CALL relies on OPENSSL_NO_ASM. However, when a configuration simply lacks the assembler implementation for RC4 (which is where we have implemented the stitched call), OPENSSL_NO_ASM isn't implemented. Better, then, to rely on specific macros that indicated that RC4 (and MD5) are implemented in assembler. For this to work properly, we must also make sure Configure adds the definition of RC4_ASM among the C flags. Reviewed-by: Andy Polyakov (cherry picked from commit 216e8d91033d237880cff7da0d02d46d47bae41b) --- Configure | 3 +++ crypto/evp/e_rc4_hmac_md5.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Configure b/Configure index b30b57f209..3604ba4f73 100755 --- a/Configure +++ b/Configure @@ -1126,6 +1126,9 @@ unless ($disabled{asm}) { push @{$config{defines}}, "SHA256_ASM" if ($target{sha1_asm_src} =~ /sha256/); push @{$config{defines}}, "SHA512_ASM" if ($target{sha1_asm_src} =~ /sha512/); } + if ($target{rc4_asm_src} ne $table{DEFAULTS}->{rc4_asm_src}) { + push @{$config{defines}}, "RC4_ASM"; + } if ($target{md5_asm_src}) { push @{$config{defines}}, "MD5_ASM"; } diff --git a/crypto/evp/e_rc4_hmac_md5.c b/crypto/evp/e_rc4_hmac_md5.c index 832daef178..e7aa1f86ad 100644 --- a/crypto/evp/e_rc4_hmac_md5.c +++ b/crypto/evp/e_rc4_hmac_md5.c @@ -60,7 +60,7 @@ static int rc4_hmac_md5_init_key(EVP_CIPHER_CTX *ctx, return 1; } -# if !defined(OPENSSL_NO_ASM) && ( \ +# if defined(RC4_ASM) && defined(MD5_ASM) && ( \ defined(__x86_64) || defined(__x86_64__) || \ defined(_M_AMD64) || defined(_M_X64) ) # define STITCHED_CALL -- 2.25.1