aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-11-11 00:53:19 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-11-11 00:53:19 +0000
commit0143c7ae3a3f1ab6d3cf26ed069d14fcc3ea20fa (patch)
tree50ffded36d6f9ee35376fbb6eb4ba55d71695283
parent48666af149b41ce605c40c044a522d258d6c5b04 (diff)
issue #5676
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7065 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xChangeLog2
-rwxr-xr-xapps/app_disa.c25
2 files changed, 15 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index cf4b9febf..1e76812a1 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2005-11-10 Kevin P. Fleming <kpfleming@digium.com>
+ * apps/app_disa.c (disa_exec): correct password file parsing (issue #5676)
+
* apps/app_meetme.c (conf_run): don't restrict admin users from joining a locked conference (issue #5680)
* channels/chan_misdn.c: include stdio.h (issue #5671)
diff --git a/apps/app_disa.c b/apps/app_disa.c
index 8a26ba55f..ddde01566 100755
--- a/apps/app_disa.c
+++ b/apps/app_disa.c
@@ -119,6 +119,7 @@ static int disa_exec(struct ast_channel *chan, void *data)
int digittimeout = 10000;
struct localuser *u;
char *tmp, arg2[256]="",exten[AST_MAX_EXTENSION],acctcode[20]="";
+ char pwline[256];
char *ourcontext,*ourcallerid,ourcidname[256],ourcidnum[256],*mailbox;
struct ast_frame *f;
struct timeval lastdigittime;
@@ -262,18 +263,18 @@ static int disa_exec(struct ast_channel *chan, void *data)
LOCAL_USER_REMOVE(u);
return -1;
}
- tmp[0] = 0;
- while(fgets(tmp,sizeof(tmp) - 1,fp))
+ pwline[0] = 0;
+ while(fgets(pwline,sizeof(pwline) - 1,fp))
{
char *stringp=NULL,*stringp2;
- if (!tmp[0]) continue;
- if (tmp[strlen(tmp) - 1] == '\n')
- tmp[strlen(tmp) - 1] = 0;
- if (!tmp[0]) continue;
+ if (!pwline[0]) continue;
+ if (pwline[strlen(pwline) - 1] == '\n')
+ pwline[strlen(pwline) - 1] = 0;
+ if (!pwline[0]) continue;
/* skip comments */
- if (tmp[0] == '#') continue;
- if (tmp[0] == ';') continue;
- stringp=tmp;
+ if (pwline[0] == '#') continue;
+ if (pwline[0] == ';') continue;
+ stringp=pwline;
strsep(&stringp, "|");
stringp2=strsep(&stringp, "|");
if (stringp2) {
@@ -287,14 +288,14 @@ static int disa_exec(struct ast_channel *chan, void *data)
ast_log(LOG_DEBUG, "Mailbox: %s\n",mailbox);
/* password must be in valid format (numeric) */
- if (sscanf(tmp,"%d",&j) < 1) continue;
+ if (sscanf(pwline,"%d",&j) < 1) continue;
/* if we got it */
- if (!strcmp(exten,tmp)) break;
+ if (!strcmp(exten,pwline)) break;
}
fclose(fp);
}
/* compare the two */
- if (strcmp(exten,tmp))
+ if (strcmp(exten,pwline))
{
ast_log(LOG_WARNING,"DISA on chan %s got bad password %s\n",chan->name,exten);
goto reorder;