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~17^2~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7c69478064ffc1a17d8b7f44d06f813fc0f257b8;p=thirdparty%2Fopenssl.git 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 07b2bc6fcdb..d6e98f08117 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));