summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Marcos Oltra <pablo.marcos.oltra@gmail.com>2018-03-08 09:34:25 +0100
committerTimur Pocheptsov <timur.pocheptsov@qt.io>2018-03-27 04:15:37 +0000
commitc2373fce3c112a0e497ab1de5dfe670ad8aa59c5 (patch)
tree7793bbbe1764e9f9570df4c9d13b54e714484bf5 /src
parentc7c41fa1c6bced218e9a44859feb593624340228 (diff)
macOS: Fix memory leak in systemCaCertificates
We were releasing only the memory of latest iteration since cfCerts was being rewritten in every iteration, invalidating the RAII. Hence, we need to define the variable within the loop to ensure the object is released for every iteration. Task-number: QTBUG-66937 Change-Id: Iaa9365168728337c6cdaac4aef686652903cf5a9 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/network/ssl/qsslsocket_mac_shared.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/network/ssl/qsslsocket_mac_shared.cpp b/src/network/ssl/qsslsocket_mac_shared.cpp
index d239fe23dd..4f0adf16f9 100644
--- a/src/network/ssl/qsslsocket_mac_shared.cpp
+++ b/src/network/ssl/qsslsocket_mac_shared.cpp
@@ -128,10 +128,10 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
QList<QSslCertificate> systemCerts;
// SecTrustSettingsCopyCertificates is not defined on iOS.
#ifdef Q_OS_OSX
- QCFType<CFArrayRef> cfCerts;
// iterate through all enum members, order:
// kSecTrustSettingsDomainUser, kSecTrustSettingsDomainAdmin, kSecTrustSettingsDomainSystem
for (int dom = kSecTrustSettingsDomainUser; dom <= int(kSecTrustSettingsDomainSystem); dom++) {
+ QCFType<CFArrayRef> cfCerts;
OSStatus status = SecTrustSettingsCopyCertificates(SecTrustSettingsDomain(dom), &cfCerts);
if (status == noErr) {
const CFIndex size = CFArrayGetCount(cfCerts);