Add safety NULL pointer check in module user references.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 5 Nov 2012 21:42:49 +0000 (21:42 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 5 Nov 2012 21:42:49 +0000 (21:42 +0000)
Made __ast_module_user_remove() check for NULL pointers.
........

Merged revision 375860 from C.3
........

Merged revisions 375862 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 375863 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 375864 from http://svn.asterisk.org/svn/asterisk/branches/11

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

main/loader.c

index c1dfc83..2af9d20 100644 (file)
@@ -210,13 +210,14 @@ void ast_module_unregister(const struct ast_module_info *info)
        }
 }
 
-struct ast_module_user *__ast_module_user_add(struct ast_module *mod,
-                                             struct ast_channel *chan)
+struct ast_module_user *__ast_module_user_add(struct ast_module *mod, struct ast_channel *chan)
 {
-       struct ast_module_user *u = ast_calloc(1, sizeof(*u));
+       struct ast_module_user *u;
 
-       if (!u)
+       u = ast_calloc(1, sizeof(*u));
+       if (!u) {
                return NULL;
+       }
 
        u->chan = chan;
 
@@ -233,6 +234,9 @@ struct ast_module_user *__ast_module_user_add(struct ast_module *mod,
 
 void __ast_module_user_remove(struct ast_module *mod, struct ast_module_user *u)
 {
+       if (!u) {
+               return;
+       }
        AST_LIST_LOCK(&mod->users);
        AST_LIST_REMOVE(&mod->users, u, entry);
        AST_LIST_UNLOCK(&mod->users);