diff options
author | Andy Polyakov <appro@openssl.org> | 2017-03-20 12:47:08 +0100 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2017-03-22 11:09:12 +0100 |
commit | a2bb183623dac253792753b82e291fd1d180aa78 (patch) | |
tree | 631477ad48f66e4cc18831b6704dea495eb86e84 | |
parent | 08d09628d2c9f3ef599399d8cad021a07ab98347 (diff) |
modes/ocb128.c: fix misaligned access in ILP32 builds on 64-bit processors.
One could have fixed the problem by arranging 64-bit alignment of
EVP_AES_OCB_CTX.aad_buf in evp/e_aes.c, but CRYPTO_ocb128_aad
prototype doesn't imply alignment and we have to honour it.
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2994)
-rw-r--r-- | crypto/modes/ocb128.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/modes/ocb128.c b/crypto/modes/ocb128.c index c3bd13bbe2..f6f8da7ab7 100644 --- a/crypto/modes/ocb128.c +++ b/crypto/modes/ocb128.c @@ -294,7 +294,7 @@ int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, /* Sum_i = Sum_{i-1} xor ENCIPHER(K, A_i xor Offset_i) */ aad_block = (OCB_BLOCK *)(aad + ((i - ctx->blocks_hashed - 1) * 16)); - ocb_block16_xor(&ctx->offset_aad, aad_block, &tmp1); + ocb_block16_xor_misaligned(&ctx->offset_aad, aad_block, &tmp1); ctx->encrypt(tmp1.c, tmp2.c, ctx->keyenc); ocb_block16_xor(&ctx->sum, &tmp2, &ctx->sum); } |