diff options
author | Matt Jordan <mjordan@digium.com> | 2015-09-03 21:15:13 -0500 |
---|---|---|
committer | Matt Jordan <mjordan@digium.com> | 2015-09-09 19:22:04 -0500 |
commit | 4eedd9ef9d7c000cd8d67cbeb1789ac6d71860aa (patch) | |
tree | 78fa54301a7b553581c7a27fb4149c8b056e593e /main | |
parent | 777f9adfc7be50b634e0b131af611ac936f9cca8 (diff) |
main/config_options: Check for existance of internal object before derefing
Asterisk can load and register an object type while still having an invalid
sorcery mapping. This can cause an issue when a creation call is invoked.
For example, mis-configuring PJSIP's endpoint identifier by IP address mapping
in sorcery.conf will cause the sorcery mechanism to be invalidated; however, a
subsequent ARI invocation to create the object will cause a crash, as the
internal type may not be registered as sorcery expects.
Merely checking for a NULL pointer here solves the issue.
Change-Id: I54079fb94a1440992f4735a9a1bbf1abb1c601ac
Diffstat (limited to 'main')
-rw-r--r-- | main/config_options.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/main/config_options.c b/main/config_options.c index 0cc2dda3e..0c706ac53 100644 --- a/main/config_options.c +++ b/main/config_options.c @@ -837,6 +837,10 @@ int aco_set_defaults(struct aco_type *type, const char *category, void *obj) struct aco_option *opt; struct ao2_iterator iter; + if (!type->internal) { + return -1; + } + iter = ao2_iterator_init(type->internal->opts, 0); while ((opt = ao2_iterator_next(&iter))) { |