]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
nicer randomness
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 9 Jan 2008 12:44:12 +0000 (12:44 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 9 Jan 2008 12:44:12 +0000 (12:44 +0000)
git-svn-id: file:///svn/unbound/branches/beta-0.7@830 be551aaa-1e26-0410-a405-d3ace91eadb9

util/random.c

index 4998a91e30c69c976b04a78d05416a2039fae61a..7c0e5a6f88d26df029f097dcc6b04a6243226b60 100644 (file)
@@ -104,7 +104,14 @@ ub_initstate(unsigned int seed, struct ub_randstate* state,
        /* RAND_ is threadsafe, by the way */
        if(!RAND_status()) {
                /* try to seed it */
-               RAND_seed(&seed, (int)sizeof(seed));
+               unsigned char buf[256];
+               unsigned int v = seed;
+               size_t i;
+               for(i=0; i<256/sizeof(seed); i++) {
+                       memmove(buf+i*sizeof(seed), &v, sizeof(seed));
+                       v = v*seed + (unsigned int)i;
+               }
+               RAND_seed(buf, 256);
                if(!RAND_status()) {
                        log_err("Random generator has no entropy (error %ld)",
                                ERR_get_error());