Merge "chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR ...
authorMatt Jordan <mjordan@digium.com>
Wed, 29 Apr 2015 15:13:03 +0000 (10:13 -0500)
committerGerrit Code Review <gerrit2@gerrit.digium.api>
Wed, 29 Apr 2015 15:13:03 +0000 (10:13 -0500)
res/res_sorcery_config.c

index 60ecb83..deb2ffa 100644 (file)
@@ -294,6 +294,18 @@ static void sorcery_config_internal_load(void *data, const struct ast_sorcery *s
                        continue;
                }
 
+               /*  Confirm an object with this id does not already exist in the bucket.
+                *  If it exists, however, the configuration is invalid so stop
+                *  processing and destroy it. */
+               obj = ao2_find(objects, id, OBJ_KEY;
+
+               if (obj) {
+                       ast_log(LOG_ERROR, "Config file '%s' could not be loaded; configuration contains a duplicate object: '%s' of type '%s'\n",
+                               config->filename, id, type);
+                       ast_config_destroy(cfg);
+                       return;
+               }
+
                if (!(obj = ast_sorcery_alloc(sorcery, type, id)) ||
                    ast_sorcery_objectset_apply(sorcery, obj, ast_category_first(category))) {