From 6028587b9f7870b15bc8845080cd572a347354ea Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Mon, 12 Aug 2019 05:34:11 -0400 Subject: Tighten Test_RandomNumberGenerator test Debian HURD was slipping between the cracks. HURD appeared to be a minor failure because entropy on the heap improved the test result. After we zero'd the block, it was a catastrophic failure. --- validat3.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'validat3.cpp') diff --git a/validat3.cpp b/validat3.cpp index b5dcd6d2..bd4c4f51 100644 --- a/validat3.cpp +++ b/validat3.cpp @@ -429,8 +429,17 @@ bool Test_RandomNumberGenerator(RandomNumberGenerator& prng, bool drain=false) RandomNumberSource(prng, UINT_MAX, true, new Redirector(TheBitBucket())); } + // Use a block that is zero'd to catch bad RNG's that appear [somewhat] + // OK due to entropy in the heap. We found Debian HURD was failing, but + // not that badly. For example, we would see "100000 generated bytes + // compressed to 98749 bytes by DEFLATE". Once we zero'd the block, the + // message changed to "100000 generated bytes compressed to 27 bytes by + // DEFLATE". Doh... + SecByteBlock block(NULLPTR, GENERATE_SIZE); + RandomNumberSource(prng, GENERATE_SIZE, new ArraySink(block, block.size())); + MeterFilter meter(new Redirector(TheBitBucket())); - RandomNumberSource(prng, GENERATE_SIZE, true, new Deflator(new Redirector(meter))); + StringSource(block, block.size(), true, new Deflator(new Redirector(meter))); if (meter.GetTotalBytes() < GENERATE_SIZE) { -- cgit v1.2.1