]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
main/config_options: Check for existance of internal object before derefing 92/1192/3
authorMatt Jordan <mjordan@digium.com>
Fri, 4 Sep 2015 02:15:13 +0000 (21:15 -0500)
committerMatt Jordan <mjordan@digium.com>
Thu, 10 Sep 2015 00:22:04 +0000 (19:22 -0500)
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

main/config_options.c

index 0cc2dda3e5740f6e1ccbc58e9a47cceeac455cea..0c706ac53f2dd14296fee24a8eb5317250be7948 100644 (file)
@@ -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))) {