]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_confbridge: Fix ref leak in CLI "confbridge kick" command.
authorRichard Mudgett <rmudgett@digium.com>
Wed, 7 May 2014 20:34:58 +0000 (20:34 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 7 May 2014 20:34:58 +0000 (20:34 +0000)
Fixed ref leak in the CLI "confbridge kick" command when the channel to be
kicked was not in the conference.
........

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

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

apps/app_confbridge.c

index 4fcc3da79ed1747b7cb94e566c1db079a0e2927a..5700fa64defef75c2210c2573e549c043678236b 100644 (file)
@@ -2227,6 +2227,7 @@ static char *complete_confbridge_participant(const char *conference_name, const
 static char *handle_cli_confbridge_kick(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        struct confbridge_conference *conference;
+       int not_found;
 
        switch (cmd) {
        case CLI_INIT:
@@ -2254,11 +2255,12 @@ static char *handle_cli_confbridge_kick(struct ast_cli_entry *e, int cmd, struct
                ast_cli(a->fd, "No conference bridge named '%s' found!\n", a->argv[2]);
                return CLI_SUCCESS;
        }
-       if (kick_conference_participant(conference, a->argv[3])) {
+       not_found = kick_conference_participant(conference, a->argv[3]);
+       ao2_ref(conference, -1);
+       if (not_found) {
                ast_cli(a->fd, "No participant named '%s' found!\n", a->argv[3]);
                return CLI_SUCCESS;
        }
-       ao2_ref(conference, -1);
        ast_cli(a->fd, "Participant '%s' kicked out of conference '%s'\n", a->argv[3], a->argv[2]);
        return CLI_SUCCESS;
 }
@@ -2892,7 +2894,7 @@ static int action_confbridgekick(struct mansession *s, const struct message *m)
        const char *conference_name = astman_get_header(m, "Conference");
        const char *channel = astman_get_header(m, "Channel");
        struct confbridge_conference *conference;
-       int found = 0;
+       int found;
 
        if (ast_strlen_zero(conference_name)) {
                astman_send_error(s, m, "No Conference name provided.");