diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-04-04 19:59:49 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-04-04 20:03:35 +0200 |
commit | 6c7c2264fecc6f73cb7109862da2ea335845f228 (patch) | |
tree | 254ea5d40a1269966e6e1456ea1e85c8245520aa /src | |
parent | Update README.md (diff) | |
download | haveged-6c7c2264fecc6f73cb7109862da2ea335845f228.tar.xz haveged-6c7c2264fecc6f73cb7109862da2ea335845f228.zip |
Round bits up and target full pool size
Rather than rounding bits down, round them up. Otherwise 249 bits full
in a 256 bit pool won't ever get filled up with the additional 7 bits.
In addition, target a full pool rather than a half pool, since a full
pool is sometimes required.
Diffstat (limited to 'src')
-rw-r--r-- | src/haveged.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/haveged.c b/src/haveged.c index cb88d4a..f668968 100644 --- a/src/haveged.c +++ b/src/haveged.c @@ -649,7 +649,7 @@ static void run_daemon( /* RETURN: nothing */ t[1] = time(NULL); if (t[1] - t[0] > 600) { /* add entropy on daemon start and then every 600 seconds unconditionally */ - nbytes = poolSize / 2; + nbytes = poolSize; r = (nbytes+sizeof(H_UINT)-1)/sizeof(H_UINT); fills = h->n_fills; if (havege_rng(h, (H_UINT *)output->buf, r)<1) @@ -741,7 +741,7 @@ static void run_daemon( /* RETURN: nothing */ if (ioctl(random_fd, RNDGETENTCNT, ¤t) == -1) error_exit("Couldn't query entropy-level from kernel"); /* get number of bytes needed to fill pool */ - nbytes = (poolSize - current)/8; + nbytes = (poolSize - current + 7)/8; if(nbytes<1) continue; /* get that many random bytes */ r = (nbytes+sizeof(H_UINT)-1)/sizeof(H_UINT); |