- (djm) Fix interrupted read in entropy gatherer. Spotted by markus@ on
a fast UltraSPARC.
diff --git a/ChangeLog b/ChangeLog
index ed6c330..f683a86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+20010803
+ - (djm) Fix interrupted read in entropy gatherer. Spotted by markus@ on
+ a fast UltraSPARC.
+
20010726
- (stevesk) use mysignal() in protocol 1 loop now that the SIGCHLD
handler has converged.
@@ -6103,4 +6107,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
-$Id: ChangeLog,v 1.1424 2001/07/26 17:51:49 stevesk Exp $
+$Id: ChangeLog,v 1.1425 2001/08/06 06:51:49 djm Exp $
diff --git a/entropy.c b/entropy.c
index 554a72b..d9760cc 100644
--- a/entropy.c
+++ b/entropy.c
@@ -40,7 +40,7 @@
#include "pathnames.h"
#include "log.h"
-RCSID("$Id: entropy.c,v 1.37 2001/06/27 13:36:08 djm Exp $");
+RCSID("$Id: entropy.c,v 1.38 2001/08/06 06:51:49 djm Exp $");
#ifndef offsetof
# define offsetof(type, member) ((size_t) &((type *)0)->member)
@@ -505,7 +505,9 @@
break;
case 1:
/* command input */
- bytes_read = read(p[0], buf, sizeof(buf));
+ do {
+ bytes_read = read(p[0], buf, sizeof(buf));
+ } while (bytes_read == -1 && errno == EINTR);
RAND_add(&bytes_read, sizeof(&bytes_read), 0.0);
if (bytes_read == -1) {
error_abort = 1;