summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/server/net/certmanager.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/server/net/certmanager.cpp b/src/server/net/certmanager.cpp
index 933bbbc..0121538 100644
--- a/src/server/net/certmanager.cpp
+++ b/src/server/net/certmanager.cpp
@@ -40,16 +40,22 @@ bool getPrivateKeyAndCert(const QString &name, QSslKey &key, QSslCertificate &ce
cert = _certs[name];
return true;
}
- QString certFile = QDir::homePath().append("/").append(CERTSTORAGE).append(name);
+ QString certDir = QDir::homePath().append("/").append(CERTSTORAGE);
+ if (!QDir::root().mkpath(certDir)) {
+ certDir = QString("/tmp/") + qrand() + "-" + qrand() + "/";
+ QDir::root().mkpath(certDir);
+ }
+ QString certFile = certDir.append(name);
QString keyFile = certFile;
keyFile.append(".rsa");
certFile.append(".crt");
//
if (!loadFiles(keyFile, certFile, key, cert)) {
generateFiles(keyFile, certFile);
- if (!loadFiles(keyFile, certFile, key, cert))
- qDebug() << "error while creating cert and key files\n";
- return false;
+ if (!loadFiles(keyFile, certFile, key, cert)) {
+ qDebug() << "error while creating cert and key files";
+ return false;
+ }
}
_certs.insert(name, cert);
_keys.insert(name, key);