~ chicken-core (chicken-5) 87d811181e814502e87c4333a3a53a260c6a6c85


commit 87d811181e814502e87c4333a3a53a260c6a6c85
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Nov 5 11:45:32 2017 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sun Nov 5 11:45:32 2017 +0100

    randomize result length for random bignum

diff --git a/runtime.c b/runtime.c
index 7b7c3539..eee653f0 100644
--- a/runtime.c
+++ b/runtime.c
@@ -12677,12 +12677,11 @@ C_s_a_u_i_random_int(C_word **ptr, C_word n, C_word rn)
   if(C_bignum_negativep(rn))
     barf(C_OUT_OF_RANGE_ERROR, "pseudo-random-integer", rn, C_fix(0));
 
-  int len = integer_length_abs(rn);
+  int len = random_uniform(integer_length_abs(rn));
   C_word size = C_fix(C_BIGNUM_BITS_TO_DIGITS(len));
   C_word result = C_allocate_scratch_bignum(ptr, size, C_SCHEME_FALSE, C_SCHEME_FALSE);
   C_uword *p;
   C_uword highest_word = C_bignum_digits(rn)[C_bignum_size(rn)-1];
-
   start = C_bignum_digits(result);
   end = start + C_bignum_size(result);
 
Trap