From b1a191b50ac29186e71d8f4ba68d043334313270 Mon Sep 17 00:00:00 2001 From: jeremy Date: Wed, 24 Mar 2004 03:48:18 +0000 Subject: check input for errors. Bug #435 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2543 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_senddtmf.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'apps/app_senddtmf.c') diff --git a/apps/app_senddtmf.c b/apps/app_senddtmf.c index 87b6cdcff..c2ca2c2f3 100755 --- a/apps/app_senddtmf.c +++ b/apps/app_senddtmf.c @@ -30,8 +30,9 @@ static char *app = "SendDTMF"; static char *synopsis = "Sends arbitrary DTMF digits"; static char *descrip = -" SendDTMF(digits): Sends DTMF digits on a channel. Returns 0 on success" -"or -1 on a hangup.\n"; +" SendDTMF(digits): Sends DTMF digits on a channel. \n" +" Accepted digits: 0-9, *#abcd\n" +" Returns 0 on success or -1 on a hangup.\n"; STANDARD_LOCAL_USER; @@ -45,7 +46,7 @@ static int senddtmf_exec(struct ast_channel *chan, void *data) struct ast_frame f; int x; if (!digits || !strlen(digits)) { - ast_log(LOG_WARNING, "SendDTMF requires an argument (digits)\n"); + ast_log(LOG_WARNING, "SendDTMF requires an argument (digits or *#abcd)\n"); return -1; } LOCAL_USER_ADD(u); @@ -55,12 +56,17 @@ static int senddtmf_exec(struct ast_channel *chan, void *data) f.subclass = digits[x]; f.src = "app_senddtmf"; res = ast_write(chan, &f); - if (res) + if (strchr("0123456789*#abcd",digits[x])==NULL) { + ast_log(LOG_WARNING, "Illegal DTMF character in string. (0-9*#abcd allowed)\n"); + } else { + res = ast_write(chan, &f); + if (res) break; - /* Wait 250ms */ - res = ast_safe_sleep(chan, 250); - if (res) + /* Wait 250ms */ + res = ast_safe_sleep(chan, 250); + if (res) break; + } } if (!res) if (option_verbose > 2) -- cgit v1.2.3