summaryrefslogtreecommitdiffstats
path: root/src/plugins/tls/openssl/qtlsbackend_openssl.cpp
diff options
context:
space:
mode:
authorAhmad Samir <[email protected]>2024-06-21 00:59:45 +0300
committerAhmad Samir <[email protected]>2024-06-27 03:35:02 +0300
commite583c3d5163a5512abac85e32359652e28a053f7 (patch)
treea8cb9487210cc084614923d82a1c318d255a3291 /src/plugins/tls/openssl/qtlsbackend_openssl.cpp
parent05d4740623477eda83c1ce544aeadffba3014806 (diff)
QDirListing: add flags to handle entries filtering
By extending IteratorFlag so that it replaces both QDir::Filter and QDirIterator::IteratorFlag enums, but with better defaults (based on how QDir/Iterator is used in 15-20 years worth of code in Qt and KDE). Make the QDirListing(QDir ~~) ctor private, also change it to use QDirIterator::IteratatorFlags; it will be used to port existing code. If QDir is ported to use QDirListing::IteratorFlags, instead of QDir::Filters, a public QDirListing(QDir) constructor can then be added. Pick-to: 6.8 Fixes: QTBUG-125504 Task-number: QTBUG-125859 Change-Id: Ide4ff8279f554029ac30d0579b0e8373ed4337f7 Reviewed-by: Thiago Macieira <[email protected]>
Diffstat (limited to 'src/plugins/tls/openssl/qtlsbackend_openssl.cpp')
-rw-r--r--src/plugins/tls/openssl/qtlsbackend_openssl.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/plugins/tls/openssl/qtlsbackend_openssl.cpp b/src/plugins/tls/openssl/qtlsbackend_openssl.cpp
index d73515724bb..f9bebaa8121 100644
--- a/src/plugins/tls/openssl/qtlsbackend_openssl.cpp
+++ b/src/plugins/tls/openssl/qtlsbackend_openssl.cpp
@@ -207,7 +207,8 @@ void QTlsBackendOpenSSL::ensureCiphersAndCertsLoaded() const
const QStringList symLinkFilter{
u"[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]"_s};
for (const auto &dir : dirs) {
- QDirListing dirList(QString::fromLatin1(dir), symLinkFilter, QDir::Files);
+ QDirListing dirList(QString::fromLatin1(dir), symLinkFilter,
+ QDirListing::IteratorFlag::FilesOnly);
if (dirList.cbegin() != dirList.cend()) { // Not empty
QSslSocketPrivate::setRootCertOnDemandLoadingSupported(true);
break;
@@ -390,11 +391,9 @@ QList<QSslCertificate> systemCaCertificates()
QStringLiteral("/etc/pki/tls/certs/ca-bundle.crt"), // Fedora, Mandriva
QStringLiteral("/usr/local/share/certs/ca-root-nss.crt") // FreeBSD's ca_root_nss
};
- QDir currentDir;
- currentDir.setNameFilters(QStringList{QStringLiteral("*.pem"), QStringLiteral("*.crt")});
+ static const QStringList nameFilters = {u"*.pem"_s, u"*.crt"_s};
for (const auto &directory : directories) {
- currentDir.setPath(QLatin1StringView(directory));
- for (const auto &dirEntry : QDirListing(currentDir)) {
+ for (const auto &dirEntry : QDirListing(directory, nameFilters)) {
// use canonical path here to not load the same certificate twice if symlinked
certFiles.insert(dirEntry.canonicalFilePath());
}