From: Tilghman Lesher Date: Tue, 21 Mar 2006 05:54:04 +0000 (+0000) Subject: Bug 6699 - Fix for ENUMLOOKUP X-Git-Tag: 1.4.0-beta1~2380 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98d91f0464bb56f5343542562614b6fe54034bdb;p=thirdparty%2Fasterisk.git Bug 6699 - Fix for ENUMLOOKUP git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@13710 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/funcs/func_enum.c b/funcs/func_enum.c index 7cd73c750f..5f1b01d569 100644 --- a/funcs/func_enum.c +++ b/funcs/func_enum.c @@ -64,7 +64,7 @@ static int function_enum(struct ast_channel *chan, char *cmd, char *data, ); int res = 0; char tech[80]; - char dest[256] = ""; + char dest[256] = "", tmp[2] = "", num[AST_MAX_EXTENSION] = ""; struct localuser *u; char *s, *p; @@ -82,6 +82,8 @@ static int function_enum(struct ast_channel *chan, char *cmd, char *data, return -1; } + LOCAL_USER_ADD(u); + ast_copy_string(tech, args.tech ? args.tech : "sip", sizeof(tech)); if (!args.zone) @@ -92,24 +94,24 @@ static int function_enum(struct ast_channel *chan, char *cmd, char *data, /* strip any '-' signs from number */ for (s = p = args.number; *s; s++) { - if (*s != '-') - *p++ = *s; - } - *p = '\0'; + if (*s != '-') { + snprintf(tmp, sizeof(tmp), "%c", *s); + strncat(num, tmp, sizeof(num)); + } - LOCAL_USER_ADD(u); + } - res = ast_get_enum(chan, p, dest, sizeof(dest), tech, sizeof(tech), args.zone, + res = ast_get_enum(chan, num, dest, sizeof(dest), tech, sizeof(tech), args.zone, args.options); - LOCAL_USER_REMOVE(u); - p = strchr(dest, ':'); if (p && strcasecmp(tech, "ALL")) ast_copy_string(buf, p + 1, len); else ast_copy_string(buf, dest, len); + LOCAL_USER_REMOVE(u); + return 0; }