aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-01-01 10:34:14 -0600
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-01-01 12:02:42 -0600
commit607688cdcb5b262715bd4eb70f9770f0326ce9e5 (patch)
treedabb9d07461e9b7dfb5c5e98d297b45d72ae80ce
parent77389ac83db5a04e173fce52170dd8d2003e5560 (diff)
downloadcryptography-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.py5
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;