diff options
author | Simon Rettberg | 2017-03-06 11:27:47 +0100 |
---|---|---|
committer | Simon Rettberg | 2017-03-06 11:27:47 +0100 |
commit | b596a6f0719ab67fa69b95523bbd513963f57e27 (patch) | |
tree | addfd9949d666899c238b4ab64a5c373a57bbb11 /src/server/net/sslserver.cpp | |
parent | [client] Periodically bring vnc and lock window to top (diff) | |
download | pvs2-b596a6f0719ab67fa69b95523bbd513963f57e27.tar.gz pvs2-b596a6f0719ab67fa69b95523bbd513963f57e27.tar.xz pvs2-b596a6f0719ab67fa69b95523bbd513963f57e27.zip |
[server] Bail out if certificates cannot be created
Diffstat (limited to 'src/server/net/sslserver.cpp')
-rw-r--r-- | src/server/net/sslserver.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/server/net/sslserver.cpp b/src/server/net/sslserver.cpp index 966ec5d..6aefae9 100644 --- a/src/server/net/sslserver.cpp +++ b/src/server/net/sslserver.cpp @@ -18,6 +18,7 @@ #include <QtNetwork/QSslCipher> #include <QtNetwork/QSslSocket> #include "certmanager.h" +#include <unistd.h> SslServer::SslServer() { @@ -36,11 +37,18 @@ SslServer::~SslServer() */ void SslServer::incomingConnection(int socketDescriptor) { - QSslSocket *serverSocket = new QSslSocket(NULL); - connect(serverSocket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(sslErrors(const QList<QSslError> &))); + static int certFails = 0; QSslKey key; QSslCertificate cert; - CertManager::getPrivateKeyAndCert("manager", key, cert); + if (!CertManager::getPrivateKeyAndCert("manager", key, cert)) { + if (++certFails > 5) { + CertManager::fatal(); + } + ::close(socketDescriptor); + return; + } + QSslSocket *serverSocket = new QSslSocket(NULL); + connect(serverSocket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(sslErrors(const QList<QSslError> &))); serverSocket->setPrivateKey(key); serverSocket->setLocalCertificate(cert); serverSocket->setPeerVerifyMode(QSslSocket::VerifyNone); |