mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
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
This commit is contained in:
@@ -837,6 +837,10 @@ int aco_set_defaults(struct aco_type *type, const char *category, void *obj)
|
|||||||
struct aco_option *opt;
|
struct aco_option *opt;
|
||||||
struct ao2_iterator iter;
|
struct ao2_iterator iter;
|
||||||
|
|
||||||
|
if (!type->internal) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
iter = ao2_iterator_init(type->internal->opts, 0);
|
iter = ao2_iterator_init(type->internal->opts, 0);
|
||||||
|
|
||||||
while ((opt = ao2_iterator_next(&iter))) {
|
while ((opt = ao2_iterator_next(&iter))) {
|
||||||
|
Reference in New Issue
Block a user