diff options
| author | Ahmad Samir <[email protected]> | 2024-06-21 00:59:45 +0300 |
|---|---|---|
| committer | Ahmad Samir <[email protected]> | 2024-06-27 03:35:02 +0300 |
| commit | e583c3d5163a5512abac85e32359652e28a053f7 (patch) | |
| tree | a8cb9487210cc084614923d82a1c318d255a3291 /src/plugins/tls/openssl/qtlsbackend_openssl.cpp | |
| parent | 05d4740623477eda83c1ce544aeadffba3014806 (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.cpp | 9 |
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()); } |
