From d8fbd37f9544ae90cd347371d0d97028843b18fa Mon Sep 17 00:00:00 2001 From: Thomas Dohmke Date: Tue, 13 Mar 2012 18:13:08 +0100 Subject: [PATCH] Fix if JSON response is invalid or not matching our expectations. --- Classes/BWHockeyManager.m | 2 +- Classes/CNSHockeyManager.m | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Classes/BWHockeyManager.m b/Classes/BWHockeyManager.m index 777456de61..ff64eae4b1 100644 --- a/Classes/BWHockeyManager.m +++ b/Classes/BWHockeyManager.m @@ -1003,7 +1003,7 @@ static NSString *kHockeyErrorDomain = @"HockeyErrorDomain"; BWHockeyLog(@"Received API response: %@", responseString); id json = [self parseJSONResultString:responseString]; - self.trackerConfig = ([self checkForTracker] ? [json valueForKey:@"tracker"] : nil); + self.trackerConfig = (([self checkForTracker] && [[json valueForKey:@"tracker"] isKindOfClass:[NSDictionary class]]) ? [json valueForKey:@"tracker"] : nil); if (![self isAppStoreEnvironment]) { NSArray *feedArray = (NSArray *)([self checkForTracker] ? [json valueForKey:@"versions"] : json); diff --git a/Classes/CNSHockeyManager.m b/Classes/CNSHockeyManager.m index 9b1bfb844f..5a71cab631 100644 --- a/Classes/CNSHockeyManager.m +++ b/Classes/CNSHockeyManager.m @@ -101,7 +101,8 @@ } + (BOOL)checkJMCConfiguration:(NSDictionary *)configuration { - return (([[configuration valueForKey:@"enabled"] boolValue]) && + return (([configuration isKindOfClass:[NSDictionary class]]) && + ([[configuration valueForKey:@"enabled"] boolValue]) && ([[configuration valueForKey:@"url"] length] > 0) && ([[configuration valueForKey:@"key"] length] > 0) && ([[configuration valueForKey:@"project"] length] > 0)); @@ -395,7 +396,7 @@ } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - if ([object trackerConfig]) { + if (([object trackerConfig]) && ([[object trackerConfig] isKindOfClass:[NSDictionary class]])) { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *trackerConfig = [[defaults valueForKey:@"CNSTrackerConfigurations"] mutableCopy]; if (!trackerConfig) {