From 8e6202b1340114dcf506341d4f64447c6900671f Mon Sep 17 00:00:00 2001 From: Mattt Thompson Date: Fri, 8 Feb 2013 14:37:17 +0100 Subject: [PATCH] Fixing compiler warnings in SSL pinning initializers Minor refactoring --- AFNetworking/AFURLConnectionOperation.m | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/AFNetworking/AFURLConnectionOperation.m b/AFNetworking/AFURLConnectionOperation.m index e273498..3d538e0 100644 --- a/AFNetworking/AFURLConnectionOperation.m +++ b/AFNetworking/AFURLConnectionOperation.m @@ -186,11 +186,12 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat NSBundle *bundle = [NSBundle bundleForClass:[self class]]; NSArray *paths = [bundle pathsForResourcesOfType:@"cer" inDirectory:@"."]; - NSMutableArray *certificates = [NSMutableArray array]; + NSMutableArray *certificates = [NSMutableArray arrayWithCapacity:[paths count]]; for (NSString *path in paths) { NSData *certificateData = [NSData dataWithContentsOfFile:path]; [certificates addObject:certificateData]; } + _pinnedCertificates = [[NSArray alloc] initWithArray:certificates]; }); @@ -202,25 +203,29 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSArray *pinnedCertificates = [self pinnedCertificates]; - NSMutableArray *publicKeys = [NSMutableArray array]; + NSMutableArray *publicKeys = [NSMutableArray arrayWithCapacity:[pinnedCertificates count]]; for (NSData *data in pinnedCertificates) { SecCertificateRef allowedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)data); - NSParameterAssert(allowedCertificate); + NSCParameterAssert(allowedCertificate); + + SecCertificateRef allowedCertificates[] = {allowedCertificate}; + CFArrayRef certificates = CFArrayCreate(NULL, (const void **)allowedCertificates, 1, NULL); SecPolicyRef policy = SecPolicyCreateBasicX509(); SecTrustRef allowedTrust = NULL; - OSStatus status = SecTrustCreateWithCertificates(allowedCertificate, policy, &allowedTrust); - NSAssert(status == noErr, @"SecTrustCreateWithCertificates error: %ld", status); + OSStatus status = SecTrustCreateWithCertificates(certificates, policy, &allowedTrust); + NSAssert(status == noErr, @"SecTrustCreateWithCertificates error: %ld", (long int)status); SecKeyRef allowedPublicKey = SecTrustCopyPublicKey(allowedTrust); [publicKeys addObject:(__bridge_transfer id)allowedPublicKey]; - + CFRelease(allowedTrust); - CFRelease(allowedCertificate); CFRelease(policy); + CFRelease(certificates); + CFRelease(allowedCertificate); } - + _pinnedPublicKeys = [[NSArray alloc] initWithArray:publicKeys]; });