From c2373fce3c112a0e497ab1de5dfe670ad8aa59c5 Mon Sep 17 00:00:00 2001 From: Pablo Marcos Oltra Date: Thu, 8 Mar 2018 09:34:25 +0100 Subject: 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 --- src/network/ssl/qsslsocket_mac_shared.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 QSslSocketPrivate::systemCaCertificates() QList systemCerts; // SecTrustSettingsCopyCertificates is not defined on iOS. #ifdef Q_OS_OSX - QCFType cfCerts; // iterate through all enum members, order: // kSecTrustSettingsDomainUser, kSecTrustSettingsDomainAdmin, kSecTrustSettingsDomainSystem for (int dom = kSecTrustSettingsDomainUser; dom <= int(kSecTrustSettingsDomainSystem); dom++) { + QCFType cfCerts; OSStatus status = SecTrustSettingsCopyCertificates(SecTrustSettingsDomain(dom), &cfCerts); if (status == noErr) { const CFIndex size = CFArrayGetCount(cfCerts); -- cgit v1.2.3