From 73da11fe07c121764ebf1f638bb1e69ccd515e9a Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Mon, 13 Jul 2009 15:47:42 +0000 Subject: [PATCH] Fix mingw ID randomness from 8 to 16 bits. git-svn-id: file:///svn/unbound/trunk@1717 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 2 ++ util/random.c | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 87523e6a1..5979cf02b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Fix for crash at start on windows. - tag for release 1.3.2. - trunk has version 1.3.3. + - Fix for ID bits on windows to use all 16. RAND_MAX was not + defined like you'd expect on mingw. 9 July 2009: Wouter - tag for release 1.3.1. diff --git a/util/random.c b/util/random.c index d98b88917..4b387fe49 100644 --- a/util/random.c +++ b/util/random.c @@ -78,6 +78,12 @@ struct ub_randstate { /** Size of key to use */ #define SEED_SIZE 20 +/** + * Max random value. Similar to RAND_MAX, but more portable + * (mingw uses only 15 bits random). + */ +#define MAX_VALUE 0x7fffffff + /** Number of bytes to reseed after */ #define REKEY_BYTES (1 << 24) @@ -168,7 +174,7 @@ ub_random(struct ub_randstate* s) RC4(&s->rc4, sizeof(r), (unsigned char *)&r, (unsigned char *)&r); s->rc4_ready -= sizeof(r); - return (long int)((r) % (((unsigned)RAND_MAX + 1))); + return (long int)((r) % (((unsigned)MAX_VALUE + 1))); } void