From 0e4aaf2e7ee53608d761bb327aeb7e8e4de92b24 Mon Sep 17 00:00:00 2001 From: Pasin Suriyentrakorn Date: Fri, 19 Oct 2018 21:12:52 -0700 Subject: [PATCH] Fix pinnedServerCertificate not getting retained CBLReplicatorConfiguration.pinnedServerCertificate is Core Foundation type so explicitly retaining and releasing are required. --- Objective-C/CBLReplicatorConfiguration.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Objective-C/CBLReplicatorConfiguration.m b/Objective-C/CBLReplicatorConfiguration.m index 2ca221bcb..6b46fffe2 100644 --- a/Objective-C/CBLReplicatorConfiguration.m +++ b/Objective-C/CBLReplicatorConfiguration.m @@ -86,7 +86,11 @@ - (void) setAuthenticator: (CBLAuthenticator *)authenticator { - (void) setPinnedServerCertificate: (SecCertificateRef)pinnedServerCertificate { [self checkReadonly]; - _pinnedServerCertificate = pinnedServerCertificate; + if (_pinnedServerCertificate != pinnedServerCertificate) { + cfrelease(_pinnedServerCertificate); + _pinnedServerCertificate = pinnedServerCertificate; + cfretain(_pinnedServerCertificate); + } } @@ -187,4 +191,9 @@ - (NSDictionary*) effectiveOptions { } +- (void) dealloc { + cfrelease(_pinnedServerCertificate); +} + + @end