diff options
| author | Tobias Markmann <tm@ayena.de> | 2015-11-10 14:08:48 (GMT) | 
|---|---|---|
| committer | Swift Review <review@swift.im> | 2015-11-10 15:23:29 (GMT) | 
| commit | e754657d808cf12fd520e84a4b407be892d35c31 (patch) | |
| tree | 41f7f1333bd1611f22ab8697a448a1c9859d39ba | |
| parent | 5c5a2d35583915653408aad0b48a9b648ae3191a (diff) | |
| download | swift-e754657d808cf12fd520e84a4b407be892d35c31.zip swift-e754657d808cf12fd520e84a4b407be892d35c31.tar.bz2 | |
Fix Cocoa memory management error in Secure Transport backend
The code was calling CFRelease on a null pointer, which runs
into an assert inside CFRelease.
Test-Information:
The crash happened during client certificate authentication
using the Secure Transport backend. With this patch the crash
is gone.
Change-Id: If389dcb8b8a20fdc5cf77219d6c5afb86c9c3634
| -rw-r--r-- | Swiften/TLS/SecureTransport/SecureTransportContext.mm | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/Swiften/TLS/SecureTransport/SecureTransportContext.mm b/Swiften/TLS/SecureTransport/SecureTransportContext.mm index a702cde..2357579 100644 --- a/Swiften/TLS/SecureTransport/SecureTransportContext.mm +++ b/Swiften/TLS/SecureTransport/SecureTransportContext.mm @@ -72,12 +72,23 @@ CFArrayRef CreateClientCertificateChainAsCFArrayRef(CertificateWithKey::ref key)  			break;  		case errSecAuthFailed:  			// Password did not work for decoding the certificate. +			SWIFT_LOG(warning) << "Invalid password." << std::endl; +			break;  		case errSecDecode:  			// Other decoding error. +			SWIFT_LOG(warning) << "PKCS12 decoding error." << std::endl; +			break;  		default: -			CFRelease(certChain); +			SWIFT_LOG(warning) << "Unknown error." << std::endl; +	} +	 +	if (securityError != errSecSuccess) { +		if (items) {  			CFRelease(items); -			certChain = NULL; +			items = NULL; +		} +		CFRelease(certChain); +		certChain = NULL;  	}  	if (certChain) { | 
 Swift
 Swift