From: Mark Michelson Date: Fri, 24 Jul 2009 19:40:57 +0000 (+0000) Subject: Blocked revisions 208622 via svnmerge X-Git-Tag: 1.6.1.3-rc1~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbfb4f8a1d17f2e848d776aefce4d87dd0728857;p=thirdparty%2Fasterisk.git Blocked revisions 208622 via svnmerge ........ r208622 | mmichelson | 2009-07-24 14:24:28 -0500 (Fri, 24 Jul 2009) | 16 lines Don't impose an arbitrary limit on member lines in queues.conf I know what some of you are thinking: "UGH! Mark, why are you using ast_strdup and ast_free for the string when you can just use ast_strdupa and let the memory free itself?! Have the bats been chewing on your brain again?" Based on past experiences, I don't like using ast_strdupa inside a loop. It's a good way to potentially exhaust stack space. Also, since this only happens when reloading queues, I don't think that heap allocations and frees are going to be a huge problem. (closes issue #15559) Reported by: amorsen ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@208661 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_queue.c b/apps/app_queue.c index 71aa9e2d18..2fc317a64f 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -5488,7 +5488,7 @@ static int reload_queues(int reload) struct ao2_iterator mem_iter; int new; const char *general_val = NULL; - char parse[80]; + char *parse; char *interface, *state_interface; char *membername = NULL; int penalty; @@ -5607,7 +5607,9 @@ static int reload_queues(int reload) } /* Add a new member */ - ast_copy_string(parse, var->value, sizeof(parse)); + if (!(parse = ast_strdup(var->value))) { + continue; + } AST_STANDARD_APP_ARGS(args, parse); @@ -5652,6 +5654,7 @@ static int reload_queues(int reload) else { q->membercount++; } + ast_free(parse); } else { queue_set_param(q, var->name, var->value, var->lineno, 1); }