diff --git a/apps/app_rand.c b/apps/app_rand.c index ea35bf9b1..f7f133831 100644 --- a/apps/app_rand.c +++ b/apps/app_rand.c @@ -162,7 +162,8 @@ long app_RAND_load_files(char *name) char *p,*n; int last; long tot=0; - + int egd; + for (;;) { last=0; @@ -173,7 +174,8 @@ long app_RAND_load_files(char *name) name=p+1; if (*n == '\0') break; - tot+=RAND_egd(n); + egd=RAND_egd(n); + if (egd > 0) tot+=egd; tot+=RAND_load_file(n,1024L*1024L); if (last) break; } diff --git a/crypto/rand/rand_egd.c b/crypto/rand/rand_egd.c index 3a081d4f6..b640469fa 100644 --- a/crypto/rand/rand_egd.c +++ b/crypto/rand/rand_egd.c @@ -96,6 +96,7 @@ int RAND_egd(const char *path) buf[1] = 255; write(fd, buf, 2); if (read(fd, buf, 1) != 1) goto err; + if (buf[0] == 0) goto err; num = read(fd, buf, 255); if (num < 1) goto err; RAND_seed(buf, num);