summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTheo Buehler <tb@cvs.openbsd.org>2024-01-24 15:24:29 +0000
committerTheo Buehler <tb@cvs.openbsd.org>2024-01-24 15:24:29 +0000
commit3dee2e31d0d48fb3d7aab4917b155daa51330768 (patch)
treeb0591f9e0cf3521d3570afc976a4d94bce8f5b0e /lib
parentbeac8bb4b884cc359b0f0b215ff455e5096f4be4 (diff)
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
Diffstat (limited to 'lib')
-rw-r--r--lib/libcrypto/modes/asm/ghash-x86.pl2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libcrypto/modes/asm/ghash-x86.pl b/lib/libcrypto/modes/asm/ghash-x86.pl
index 5e868a43ff2..47833582b61 100644
--- a/lib/libcrypto/modes/asm/ghash-x86.pl
+++ b/lib/libcrypto/modes/asm/ghash-x86.pl
@@ -714,7 +714,7 @@ sub mmx_loop() {
}
&mov (&LB($nlo),&LB($dat));
- &mov ($dat,&DWP(528+$j,"esp")) if (--$j%4==0);
+ &mov ($dat,&DWP(528+$j,"esp")) if (--$j%4==0 && $j>=0);
&movd ($rem[0],$Zlo);
&movz ($rem[1],&LB($rem[1])) if ($i>0);