Harden importing.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Sat, 2 Mar 2013 11:24:57 +0000 (12:24 +0100)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Sat, 2 Mar 2013 11:24:57 +0000 (12:24 +0100)
ConfigsController.m

index 5aab09a4f07be9796aa05e2ad4357458fd8af624..d38ada85fed674d0dc2fe8e2c93bc3959f8a11c1 100644 (file)
     [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;
 }