From: Andy Polyakov Date: Wed, 29 Aug 2007 21:30:13 +0000 (+0000) Subject: aes_ige suffered SIGBUS on RISC platforms. X-Git-Tag: OpenSSL_0_9_8k^2~728 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=d8803d5ae62ee5ae1d2ef6a68c81071f3e9b7dc9 aes_ige suffered SIGBUS on RISC platforms. --- diff --git a/crypto/aes/aes_ige.c b/crypto/aes/aes_ige.c index 8b5b36bacc..45d7096181 100644 --- a/crypto/aes/aes_ige.c +++ b/crypto/aes/aes_ige.c @@ -62,9 +62,11 @@ typedef struct { /* XXX: probably some better way to do this */ #if defined(__i386__) || defined(__x86_64__) #define UNALIGNED_MEMOPS_ARE_FAST 1 +#else +#define UNALIGNED_MEMOPS_ARE_FAST 0 #endif -#ifdef UNALIGNED_MEMOPS_ARE_FAST +#if UNALIGNED_MEMOPS_ARE_FAST #define load_block(d, s) (d) = *(const aes_block_t *)(s) #define store_block(d, s) *(aes_block_t *)(d) = (s) #else @@ -89,7 +91,8 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, if (AES_ENCRYPT == enc) { - if (in != out) + if (in != out && + (UNALIGNED_MEMOPS_ARE_FAST || ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(long)==0)) { aes_block_t *ivp = (aes_block_t *)ivec; aes_block_t *iv2p = (aes_block_t *)(ivec + AES_BLOCK_SIZE); @@ -143,7 +146,8 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, } else { - if(in != out) + if (in != out && + (UNALIGNED_MEMOPS_ARE_FAST || ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(long)==0)) { aes_block_t *ivp = (aes_block_t *)ivec; aes_block_t *iv2p = (aes_block_t *)(ivec + AES_BLOCK_SIZE);