From: Richard Mudgett Date: Fri, 21 Feb 2014 18:17:14 +0000 (+0000) Subject: manager: Fix AMI Status action of a single channel. X-Git-Tag: 12.2.0-rc1~136 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6875db8e75db4e6ef2d6bce91bc501378d5a26c;p=thirdparty%2Fasterisk.git manager: Fix AMI Status action of a single channel. Fixed use of uninitialized ao2 container iterator in an off-nominal condition. Either a memory allocation error or the requested channel is an internal channel not exposed to the outside. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@408715 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/manager.c b/main/manager.c index 950f6e8ff1..83d57f8fb2 100644 --- a/main/manager.c +++ b/main/manager.c @@ -3878,7 +3878,7 @@ static int action_status(struct mansession *s, const struct message *m) } /* if we look by name, we break after the first iteration */ - for (; msg; ao2_ref(msg, -1), msg = ao2_iterator_next(&it_chans)) { + for (; msg; ao2_ref(msg, -1), msg = all ? ao2_iterator_next(&it_chans) : NULL) { struct ast_channel_snapshot *snapshot = stasis_message_data(msg); struct ast_channel *c; struct ast_str *built = ast_manager_build_channel_state_string_prefix(snapshot, ""); @@ -3961,11 +3961,6 @@ static int action_status(struct mansession *s, const struct message *m) idText); ast_free(built); - - if (!all) { - ao2_ref(msg, -1); - break; - } } if (all) {