diff options
author | tb <> | 2024-01-24 15:24:28 +0000 |
---|---|---|
committer | tb <> | 2024-01-24 15:24:28 +0000 |
commit | 5048b594fb9cd050c4d5d8bb7a9c9bad8865a171 (patch) | |
tree | d45d4074d4292f0e6ab47dfb04d2059b6d9ff9d9 | |
parent | d922913775ee6ba6ce8183ad48823d435d78225b (diff) | |
download | openbsd-5048b594fb9cd050c4d5d8bb7a9c9bad8865a171.tar.gz openbsd-5048b594fb9cd050c4d5d8bb7a9c9bad8865a171.tar.bz2 openbsd-5048b594fb9cd050c4d5d8bb7a9c9bad8865a171.zip |
Avoid a four-byte overread in gcm_ghash_4bit_mmx() on i386
This is a variant of the same logic error fixed in ghash-x86_64.pl r1.6.
The code path is only reachable on machines without FXSR or PCLMUL.
ok jsing
-rw-r--r-- | src/lib/libcrypto/modes/asm/ghash-x86.pl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lib/libcrypto/modes/asm/ghash-x86.pl b/src/lib/libcrypto/modes/asm/ghash-x86.pl index 5e868a43ff..47833582b6 100644 --- a/src/lib/libcrypto/modes/asm/ghash-x86.pl +++ b/src/lib/libcrypto/modes/asm/ghash-x86.pl | |||
@@ -714,7 +714,7 @@ sub mmx_loop() { | |||
714 | } | 714 | } |
715 | 715 | ||
716 | &mov (&LB($nlo),&LB($dat)); | 716 | &mov (&LB($nlo),&LB($dat)); |
717 | &mov ($dat,&DWP(528+$j,"esp")) if (--$j%4==0); | 717 | &mov ($dat,&DWP(528+$j,"esp")) if (--$j%4==0 && $j>=0); |
718 | 718 | ||
719 | &movd ($rem[0],$Zlo); | 719 | &movd ($rem[0],$Zlo); |
720 | &movz ($rem[1],&LB($rem[1])) if ($i>0); | 720 | &movz ($rem[1],&LB($rem[1])) if ($i>0); |