diff options
author | louiz’ <louiz@louiz.org> | 2018-04-28 13:55:35 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2018-04-28 13:57:40 +0200 |
commit | d887baa064318fdb350fb6c3f7b8e2104a644fcb (patch) | |
tree | 2237903f9649cfea87a5a785477a1ca6a5144a26 | |
parent | f481e2f194d60e9be39ca44ede8d46717937451e (diff) | |
download | biboumi-v7.tar.gz biboumi-v7.tar.bz2 biboumi-v7.tar.xz biboumi-v7.zip |
Fix a crash when botan policy does not allow any available ciphersuitev7
-rw-r--r-- | CHANGELOG.rst | 6 | ||||
-rw-r--r-- | src/network/tcp_client_socket_handler.cpp | 15 |
2 files changed, 17 insertions, 4 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 8fdafe9..338b6ac 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,9 @@ +Version 7.3 +=========== + +- Fix an uncaught exception with botan, when policy does not allow any + available ciphersuite. + Version 7.2 - 2018-01-24 ======================== diff --git a/src/network/tcp_client_socket_handler.cpp b/src/network/tcp_client_socket_handler.cpp index aac13d0..9dda73d 100644 --- a/src/network/tcp_client_socket_handler.cpp +++ b/src/network/tcp_client_socket_handler.cpp @@ -146,15 +146,22 @@ void TCPClientSocketHandler::connect(const std::string& address, const std::stri || errno == EISCONN) { log_info("Connection success."); +#ifdef BOTAN_FOUND + if (this->use_tls) + try { + this->start_tls(this->address, this->port); + } catch (const Botan::Exception& e) + { + this->on_connection_failed("TLS error: "s + e.what()); + this->close(); + return ; + } +#endif TimedEventsManager::instance().cancel("connection_timeout" + std::to_string(this->socket)); this->poller->add_socket_handler(this); this->connected = true; this->connecting = false; -#ifdef BOTAN_FOUND - if (this->use_tls) - this->start_tls(this->address, this->port); -#endif this->connection_date = std::chrono::system_clock::now(); // Get our local TCP port and store it |