From: Andy Polyakov Date: Wed, 1 Dec 2004 15:28:18 +0000 (+0000) Subject: I've introduced a bug to i386 RC4 assembler, which would emerge with X-Git-Tag: BEN_FIPS_TEST_6~14^2~12 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=7c69478064ffc1a17d8b7f44d06f813fc0f257b8 I've introduced a bug to i386 RC4 assembler, which would emerge with certain mix of calls to RC4 routine not covered by rc4test.c. It's fixed now. In addition this patch inadvertently fixes minor performance problem: in 0.9.7 context P4 was performing 12% slower than the original implementation... --- diff --git a/crypto/rc4/asm/rc4-586.pl b/crypto/rc4/asm/rc4-586.pl index 07b2bc6fcd..d6e98f0811 100644 --- a/crypto/rc4/asm/rc4-586.pl +++ b/crypto/rc4/asm/rc4-586.pl @@ -68,13 +68,13 @@ sub RC4_loop # &mov( $tx, &DWP(0,$d,$x,4)) if $p < 0; &add( &LB($y), &LB($tx)); - &inc( &LB($x)); # NEXT ROUND &mov( $ty, &DWP(0,$d,$y,4)); # XXX - &mov( &DWP(-4,$d,$x,4),$ty); # AGI + &mov( &DWP(0,$d,$x,4),$ty); &add( $ty, $tx); &mov( &DWP(0,$d,$y,4),$tx); &and( $ty, 0xff); + &inc( &LB($x)); # NEXT ROUND &mov( $tx, &DWP(0,$d,$x,4)) if $p < 1; # NEXT ROUND &mov( $ty, &DWP(0,$d,$ty,4));