summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
authorAshley Sanders <asanders@digium.com>2015-04-28 00:29:42 -0500
committerAshley Sanders <asanders@digium.com>2015-04-29 09:54:10 -0500
commit3278fe5327c6d34966ef6c87191d8d7d4fae4f66 (patch)
tree1aa30d91e63217895b9c04f2eeeb904f1c947e21 /res
parent3e4624ad21bc3eb7cedd6c7e41145ebc7cb6d86f (diff)
chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR
Sections Exist in pjsip.conf This patch modifies the current loading strategy of the pjsip configuration. If duplicate sections (e.g. sections containing the same [id/type]) are defined in [pjsip.conf], the loader will consider the configuration for the given type as invalid when the duplicate section is encountered. The entire configuration (including what was previously loaded) for the duplicate [id/type] sections will be rejected and destroyed, an error message is logged and the load processing for the given stops. ASTERISK-24996 Reported By: Ashley Sanders Change-Id: I35090ca4cd40f1f34881dfe701a329145c347aef
Diffstat (limited to 'res')
-rw-r--r--res/res_sorcery_config.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/res/res_sorcery_config.c b/res/res_sorcery_config.c
index f8ea864ff..3b138a368 100644
--- a/res/res_sorcery_config.c
+++ b/res/res_sorcery_config.c
@@ -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))) {