diff options
author | Tomas Mraz <tomas@openssl.org> | 2023-04-17 16:51:20 +0200 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2023-04-20 17:48:16 +0200 |
commit | 72dfe46550ee1f1bbfacd49f071419365bc23304 (patch) | |
tree | 0477afabc47052b9d1b264c18f07ca283193d5a9 /crypto/aes | |
parent | c8093347f736c7991350d26048b680d0e64974a0 (diff) | |
download | openssl-72dfe46550ee1f1bbfacd49f071419365bc23304.tar.gz |
aesv8-armx.pl: Avoid buffer overrread in AES-XTS decryption
Original author: Nevine Ebeid (Amazon)
Fixes: CVE-2023-1255
The buffer overread happens on decrypts of 4 mod 5 sizes.
Unless the memory just after the buffer is unmapped this is harmless.
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
(Merged from https://github.com/openssl/openssl/pull/20759)
Diffstat (limited to 'crypto/aes')
-rwxr-xr-x | crypto/aes/asm/aesv8-armx.pl | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl index ea74217317..efd3ccd1a4 100755 --- a/crypto/aes/asm/aesv8-armx.pl +++ b/crypto/aes/asm/aesv8-armx.pl @@ -3367,7 +3367,7 @@ $code.=<<___ if ($flavour =~ /64/); .align 4 .Lxts_dec_tail4x: add $inp,$inp,#16 - vld1.32 {$dat0},[$inp],#16 + tst $tailcnt,#0xf veor $tmp1,$dat1,$tmp0 vst1.8 {$tmp1},[$out],#16 veor $tmp2,$dat2,$tmp2 @@ -3376,6 +3376,8 @@ $code.=<<___ if ($flavour =~ /64/); veor $tmp4,$dat4,$tmp4 vst1.8 {$tmp3-$tmp4},[$out],#32 + b.eq .Lxts_dec_abort + vld1.32 {$dat0},[$inp],#16 b .Lxts_done .align 4 .Lxts_outer_dec_tail: |