if ((fd = open("/dev/urandom", O_RDONLY | O_NONBLOCK)) >= 0 ||
(fd = open("/dev/arandom", O_RDONLY | O_NONBLOCK)) >= 0 ||
(fd = open("/dev/random", O_RDONLY | O_NONBLOCK)) >= 0) {
if ((fd = open("/dev/urandom", O_RDONLY | O_NONBLOCK)) >= 0 ||
(fd = open("/dev/arandom", O_RDONLY | O_NONBLOCK)) >= 0 ||
(fd = open("/dev/random", O_RDONLY | O_NONBLOCK)) >= 0) {
- if ((len = read(fd, buf, sizeof(buf))) > 0) {
- rand_add(r, buf, len, len * 8);
- BURN(buf);
- ret = 1;
+ while (n < sizeof(buf)) {
+ if ((len = read(fd, buf + n, sizeof(buf) - n)) <= 0) break;
+ n += len;