issue #5676
authorKevin P. Fleming <kpfleming@digium.com>
Fri, 11 Nov 2005 00:53:19 +0000 (00:53 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Fri, 11 Nov 2005 00:53:19 +0000 (00:53 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7065 65c4cc65-6c06-0410-ace0-fbb531ad65f3

ChangeLog
apps/app_disa.c

index cf4b9fe..1e76812 100755 (executable)
--- 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)
index 8a26ba5..ddde015 100755 (executable)
@@ -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;