Browse Source

add loop to catch null values

Shelley Vohr 7 years ago
parent
commit
3fc844c15a

+ 7 - 7
atom/browser/api/atom_api_system_preferences_mac.mm

@@ -152,13 +152,13 @@ void SystemPreferences::RegisterDefaults(mate::Arguments* args) {
   } else {
     @try {
       NSDictionary* dict = DictionaryValueToNSDictionary(value);
-      // for (id key in dict) {
-      //   id value = [dict objectForKey:key];
-      //   if (value == nil) {
-      //     printf("HELLO\n");
-      //     args->ThrowError("Invalid userDefault data provided");
-      //   }
-      // }
+      for (id key in dict) {
+        id value = [dict objectForKey:key];
+        if ([value isKindOfClass:[NSNull class]] || value == nil) {
+          args->ThrowError("Invalid userDefault data provided");
+          return;
+        }
+      }
       [[NSUserDefaults standardUserDefaults] registerDefaults:dict];
     } @catch (NSException* exception) {
       args->ThrowError("Invalid userDefault data provided");

+ 1 - 0
spec/api-system-preferences-spec.js

@@ -66,6 +66,7 @@ describe('systemPreferences module', () => {
         1,
         null,
         new Date(),
+        { 'one': null }
       ]
 
       for (const badDefault of badDefaults) {