Avoid a four-byte overread in gcm_ghash_4bit_mmx() on i386
authortb <tb@openbsd.org>
Wed, 24 Jan 2024 15:24:28 +0000 (15:24 +0000)
committertb <tb@openbsd.org>
Wed, 24 Jan 2024 15:24:28 +0000 (15:24 +0000)
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

lib/libcrypto/modes/asm/ghash-x86.pl

index 5e868a4..4783358 100644 (file)
@@ -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);