diff options
author | Fernando Fernandez Mancera <ffernandezmancera@gmail.com> | 2017-12-05 00:17:09 +0100 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-12-05 12:05:09 -0500 |
commit | 313360e6e6aa6bc56e1bc3661b68df5279b6b4bc (patch) | |
tree | 890cb6ad1b1f908d94375ad62ec5dc1b6d32beb3 | |
parent | a5be2305e1217e58f355a690af96c8953a34023e (diff) | |
download | tor-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/ticket24500 | 3 | ||||
-rw-r--r-- | src/common/crypto.c | 13 |
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 */ |