From: Joe Wreschnig Date: Sat, 2 Mar 2013 11:24:57 +0000 (+0100) Subject: Harden importing. X-Git-Tag: version-1.0~57 X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=commitdiff_plain;h=aaab00fd866af505e9a5e454f1aeb3e298fd38e3;hp=4928acbee7fef98bce8188956cde9c15fac975be Harden importing. --- diff --git a/ConfigsController.m b/ConfigsController.m index 5aab09a..d38ada8 100644 --- a/ConfigsController.m +++ b/ConfigsController.m @@ -155,18 +155,25 @@ [stream close]; if (!([serialization isKindOfClass:NSDictionary.class] - && serialization[@"entries"])) { + && [serialization[@"name"] isKindOfClass:NSString.class] + && [serialization[@"entries"] isKindOfClass:NSDictionary.class])) { *error = [NSError errorWithDomain:@"Enjoyable" - code:0 - description:@"This isn't a valid mapping file."]; + code:0 + description:@"This isn't a valid mapping file."]; return nil; } NSDictionary *entries = serialization[@"entries"]; Config *cfg = [[Config alloc] initWithName:serialization[@"name"]]; - for (id key in entries) - cfg.entries[key] = [Target targetDeserialize:entries[key] - withConfigs:_configs]; + for (id key in entries) { + NSDictionary *value = entries[key]; + if ([key isKindOfClass:NSString.class]) { + Target *target = [Target targetDeserialize:value + withConfigs:_configs]; + if (target) + cfg.entries[key] = target; + } + } return cfg; }