commit | 705076ac911f868e52aa33f7b77e2b7806ff4e0e | [log] [tgz] |
---|---|---|
author | David Benjamin <davidben@chromium.org> | Tue Jun 30 20:35:25 2015 -0400 |
committer | Adam Langley <agl@google.com> | Wed Jul 01 00:50:05 2015 +0000 |
tree | b34c2b5653aba7a682494244f39d6d81fa0f0e83 | |
parent | de24aadc5bc01130b6a9d25582203bb5308fabe1 [diff] |
Handle EINTR in open and dup calls in urandom.c. Per review comment in https://boringssl-review.googlesource.com/#/c/5302/7/crypto/rand/urandom.c Change-Id: I9c279524a452cb97c60354213cbc6e2aeabe0bfa Reviewed-on: https://boringssl-review.googlesource.com/5311 Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/rand/urandom.c b/crypto/rand/urandom.c index 397ded9..d7ed5c6 100644 --- a/crypto/rand/urandom.c +++ b/crypto/rand/urandom.c
@@ -96,7 +96,9 @@ return urandom_fd; } - urandom_fd = open("/dev/urandom", O_RDONLY); + do { + urandom_fd = open("/dev/urandom", O_RDONLY); + } while (urandom_fd == -1 && errno == EINTR); return urandom_fd; } @@ -124,7 +126,9 @@ /* |RAND_set_urandom_fd| may not be called after the RNG is used. */ abort(); } - urandom_fd = dup(fd); + do { + urandom_fd = dup(fd); + } while (urandom_fd == -1 && errno == EINTR); if (urandom_fd < 0) { abort(); }