aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFernando Fernandez Mancera <ffernandezmancera@gmail.com>2017-12-05 00:17:09 +0100
committerNick Mathewson <nickm@torproject.org>2017-12-05 12:05:09 -0500
commit313360e6e6aa6bc56e1bc3661b68df5279b6b4bc (patch)
tree890cb6ad1b1f908d94375ad62ec5dc1b6d32beb3
parenta5be2305e1217e58f355a690af96c8953a34023e (diff)
downloadtor-313360e6e6aa6bc56e1bc3661b68df5279b6b4bc.tar.gz
tor-313360e6e6aa6bc56e1bc3661b68df5279b6b4bc.zip
Make errno error log more useful for getrandom()
Making errno error log more useful for getrandom() call. Adding if statement to make difference between ENOSYS and other errors. Fixes #24500 Signed-off-by: Fernando Fernandez Mancera <ffernandezmancera@gmail.com>
-rw-r--r--changes/ticket245003
-rw-r--r--src/common/crypto.c13
2 files changed, 14 insertions, 2 deletions
diff --git a/changes/ticket24500 b/changes/ticket24500
new file mode 100644
index 0000000000..0f1778d46d
--- /dev/null
+++ b/changes/ticket24500
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring:
+ - Making more useful log messages for errno errors on getrandom() call.
+ Closes ticket 24500.
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 80137b0d88..7f034ee949 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -2875,8 +2875,17 @@ crypto_strongest_rand_syscall(uint8_t *out, size_t out_len)
tor_assert(errno != EAGAIN);
tor_assert(errno != EINTR);
- /* Probably ENOSYS. */
- log_warn(LD_CRYPTO, "Can't get entropy from getrandom().");
+ /* Useful log message for errno. */
+ if (errno == ENOSYS) {
+ log_warn(LD_CRYPTO, "This warning is caused by ENOSYS error."
+ " You are running a version of Tor built to support"
+ " getrandom(), but the kernel is too old and doesn't"
+ " implement this function.");
+ } else {
+ log_warn(LD_CRYPTO, "Can't get entropy from getrandom(). %s error.",
+ strerror(errno));
+ }
+
getrandom_works = 0; /* Don't bother trying again. */
return -1;
/* LCOV_EXCL_STOP */