- Fixed test on Big Endian systems (Fixed Ticket #54)
diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function
index 94d7273..486bff8 100644
--- a/tests/suites/helpers.function
+++ b/tests/suites/helpers.function
@@ -192,6 +192,7 @@
{
rnd_pseudo_info *info = (rnd_pseudo_info *) rng_state;
uint32_t i, *k, sum, delta=0x9E3779B9;
+ unsigned char result[4];
if( rng_state == NULL )
return( rnd_std_rand( NULL, output, len ) );
@@ -200,11 +201,9 @@
while( len > 0 )
{
- size_t use_len = len;
+ size_t use_len = ( len > 4 ) ? 4 : len;
sum = 0;
- use_len = 1;
-
for( i = 0; i < 32; i++ )
{
info->v0 += (((info->v1 << 4) ^ (info->v1 >> 5)) + info->v1) ^ (sum + k[sum & 3]);
@@ -212,7 +211,8 @@
info->v1 += (((info->v0 << 4) ^ (info->v0 >> 5)) + info->v0) ^ (sum + k[(sum>>11) & 3]);
}
- memcpy( output, &info->v0, use_len );
+ PUT_ULONG_BE( info->v0, result, 0 );
+ memcpy( output, result, use_len );
len -= use_len;
}