aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-11-10 23:34:30 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-11-10 23:34:30 +0000
commit5046c7bc81743460bb718250a3190cd2b2dadd8c (patch)
tree7685eb2656e263fdc5e102f2444a243727437247
parent45d2016e557765984ce072930d9e95db22b5b187 (diff)
issue #5685
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7057 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xChangeLog2
-rwxr-xr-xchannels/chan_iax2.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a54acf244..f43d9766c 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2005-11-10 Kevin P. Fleming <kpfleming@digium.com>
+ * channels/chan_iax2.c (complete_iax2_show_peer): don't return from function without releasing lock (issue #5685)
+
* channels/iax2-provision.c (iax_provision_reload): don't leak memory (issue #5700)
* pbx/pbx_ael.c (handle_macro): don't leak memory (issue #5701)
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 806b1d2ca..d601fc05d 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -1970,6 +1970,7 @@ static char *complete_iax2_show_peer(char *line, char *word, int pos, int state)
{
int which = 0;
struct iax2_peer *p;
+ char *res = NULL;
/* 0 - iax2; 1 - show; 2 - peer; 3 - <peername> */
if(pos == 3) {
@@ -1977,14 +1978,15 @@ static char *complete_iax2_show_peer(char *line, char *word, int pos, int state)
for(p = peerl.peers ; p ; p = p->next) {
if(!strncasecmp(p->name, word, strlen(word))) {
if(++which > state) {
- return strdup(p->name);
+ res = strdup(p->name);
+ break;
}
}
}
ast_mutex_unlock(&peerl.lock);
}
- return NULL;
+ return res;
}
static int iax2_show_stats(int fd, int argc, char *argv[])