diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-01-01 10:34:14 -0600 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-01-01 12:02:42 -0600 |
commit | 607688cdcb5b262715bd4eb70f9770f0326ce9e5 (patch) | |
tree | dabb9d07461e9b7dfb5c5e98d297b45d72ae80ce | |
parent | 77389ac83db5a04e173fce52170dd8d2003e5560 (diff) | |
download | cryptography-607688cdcb5b262715bd4eb70f9770f0326ce9e5.tar.gz cryptography-607688cdcb5b262715bd4eb70f9770f0326ce9e5.tar.bz2 cryptography-607688cdcb5b262715bd4eb70f9770f0326ce9e5.zip |
remove stray break, add FD_CLOEXEC, reset fd var even if close fails
-rw-r--r-- | cryptography/hazmat/backends/openssl/osrand_engine.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/cryptography/hazmat/backends/openssl/osrand_engine.py b/cryptography/hazmat/backends/openssl/osrand_engine.py index b0cdf80f..bca2d79d 100644 --- a/cryptography/hazmat/backends/openssl/osrand_engine.py +++ b/cryptography/hazmat/backends/openssl/osrand_engine.py @@ -47,7 +47,6 @@ static int osrandom_rand_bytes(unsigned char *buffer, int size) { } while (n < 0 && errno == EINTR); if (n <= 0) { return 0; - break; } buffer += n; size -= n; @@ -69,6 +68,9 @@ static int osrandom_init(ENGINE *e) { } urandom_fd = open("/dev/urandom", O_RDONLY); if (urandom_fd > -1) { + if (fcntl(urandom_fd, F_SETFD, FD_CLOEXEC) == -1) { + return 0; + } return 1; } else { return 0; @@ -81,6 +83,7 @@ static int osrandom_finish(ENGINE *e) { n = close(urandom_fd); } while (n < 0 && errno == EINTR); if (n < 0) { + urandom_fd = -1; return 0; } else { urandom_fd = -1; |