diff options
author | Pablo Marcos Oltra <pablo.marcos.oltra@gmail.com> | 2018-03-08 09:34:25 +0100 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2018-03-27 04:15:37 +0000 |
commit | c2373fce3c112a0e497ab1de5dfe670ad8aa59c5 (patch) | |
tree | 7793bbbe1764e9f9570df4c9d13b54e714484bf5 /src | |
parent | c7c41fa1c6bced218e9a44859feb593624340228 (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.cpp | 2 |
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); |