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>
This commit is contained in:
parent
c7c41fa1c6
commit
c2373fce3c
@ -128,10 +128,10 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
|
|||||||
QList<QSslCertificate> systemCerts;
|
QList<QSslCertificate> systemCerts;
|
||||||
// SecTrustSettingsCopyCertificates is not defined on iOS.
|
// SecTrustSettingsCopyCertificates is not defined on iOS.
|
||||||
#ifdef Q_OS_OSX
|
#ifdef Q_OS_OSX
|
||||||
QCFType<CFArrayRef> cfCerts;
|
|
||||||
// iterate through all enum members, order:
|
// iterate through all enum members, order:
|
||||||
// kSecTrustSettingsDomainUser, kSecTrustSettingsDomainAdmin, kSecTrustSettingsDomainSystem
|
// kSecTrustSettingsDomainUser, kSecTrustSettingsDomainAdmin, kSecTrustSettingsDomainSystem
|
||||||
for (int dom = kSecTrustSettingsDomainUser; dom <= int(kSecTrustSettingsDomainSystem); dom++) {
|
for (int dom = kSecTrustSettingsDomainUser; dom <= int(kSecTrustSettingsDomainSystem); dom++) {
|
||||||
|
QCFType<CFArrayRef> cfCerts;
|
||||||
OSStatus status = SecTrustSettingsCopyCertificates(SecTrustSettingsDomain(dom), &cfCerts);
|
OSStatus status = SecTrustSettingsCopyCertificates(SecTrustSettingsDomain(dom), &cfCerts);
|
||||||
if (status == noErr) {
|
if (status == noErr) {
|
||||||
const CFIndex size = CFArrayGetCount(cfCerts);
|
const CFIndex size = CFArrayGetCount(cfCerts);
|
||||||
|
Loading…
Reference in New Issue
Block a user