Fix if JSON response is invalid or not matching our expectations.

This commit is contained in:
Thomas Dohmke 2012-03-13 18:13:08 +01:00
parent 31cbdde184
commit d8fbd37f95
2 changed files with 4 additions and 3 deletions

View File

@ -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);

View File

@ -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) {