--- rand.c.orig 2012-11-11 13:31:39.401993081 -0800 +++ rand.c 2012-11-11 13:33:46.507002603 -0800 @@ -22,6 +22,7 @@ # include # include #endif +#include #include #include #include @@ -77,11 +78,13 @@ CryptReleaseContext(hcrypt, 0); #else struct timeval *tv = (struct timeval *)seed; - int fd; + int fd, r_stat; if ((fd = open("/dev/arandom", O_RDONLY)) != -1 || (fd = open("/dev/urandom", O_RDONLY)) != -1) { - read(fd, seed + sizeof(*tv), sizeof(seed) - sizeof(*tv)); + r_stat = read(fd, seed + sizeof(*tv), sizeof(seed) - sizeof(*tv)); + if (r_stat < 0) /* read failed, let user know */ + fprintf(stderr, "failure on read() from /dev/arandom or /dev/urandom\n"); close(fd); } gettimeofday(tv, NULL);