OpenSSL CVS Repository
http://cvs.openssl.org/
____________________________________________________________
________________
Server: cvs.openssl.org Name: Andy
Polyakov
Root: /v/openssl/cvs Email: appro openssl.org
Module: openssl Date:
29-Aug-2007 23:30:13
Branch: HEAD Handle:
2007082922301300
Modified files:
openssl/crypto/aes aes_ige.c
Log:
aes_ige suffered SIGBUS on RISC platforms.
Summary:
Revision Changes Path
1.7 +7 -3 openssl/crypto/aes/aes_ige.c
____________________________________________________________
________________
patch -p0 <<' .'
Index: openssl/crypto/aes/aes_ige.c
============================================================
================
$ cvs diff -u -r1.6 -r1.7 aes_ige.c
--- openssl/crypto/aes/aes_ige.c 15 May 2007 23:50:54
-0000 1.6
+++ openssl/crypto/aes/aes_ige.c 29 Aug 2007 21:30:13
-0000 1.7
 -62,9 +62,11 
/* 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 
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 
}
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);
 .
____________________________________________________________
__________
OpenSSL Project http://www.openssl.org
CVS Repository Commit List
openssl-cvs openssl.org
Automated List Manager
majordomo openssl.org
|