]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_config_wizard: fix unload SEGV
authorGeorge Joseph <george.joseph@fairview5.com>
Thu, 18 Dec 2014 00:11:24 +0000 (00:11 +0000)
committerGeorge Joseph <george.joseph@fairview5.com>
Thu, 18 Dec 2014 00:11:24 +0000 (00:11 +0000)
If certain pjsip modules aren't loaded, the wizard causes a SEGV
when it unloads.  Added a check for the presense of the object
type wizard before trying to clean it up.

Tested-by: George Joseph
........

Merged revisions 429719 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429720 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_pjsip_config_wizard.c

index 86187ee3f88781d8eb712a09308124da2b919f2e..a7f2803d174576946750b3bda0ffd0bee14d4350 100644 (file)
@@ -983,12 +983,13 @@ static int unload_module(void)
                        ao2_container_alloc_list(AO2_ALLOC_OPT_LOCK_NOLOCK, 0, NULL, NULL), ao2_cleanup);
 
                otw = find_wizard(object_types[i]);
-               if (otw->sorcery) {
-                       ast_sorcery_instance_observer_remove(otw->sorcery, &observer);
+               if (otw) {
+                       if (otw->sorcery) {
+                               ast_sorcery_instance_observer_remove(otw->sorcery, &observer);
+                       }
+                       otw->wizard->retrieve_multiple(otw->sorcery, otw->wizard_data, object_types[i], existing, NULL);
+                       ao2_callback(existing, OBJ_NODATA | OBJ_UNLINK | OBJ_MULTIPLE, delete_existing_cb, otw);
                }
-
-               otw->wizard->retrieve_multiple(otw->sorcery, otw->wizard_data, object_types[i], existing, NULL);
-               ao2_callback(existing, OBJ_NODATA | OBJ_UNLINK | OBJ_MULTIPLE, delete_existing_cb, otw);
        }
 
        AST_VECTOR_REMOVE_CMP_UNORDERED(&object_type_wizards, NULL, NOT_EQUALS, OTW_DELETE_CB);