~ 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