aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorbbryant <bbryant@f38db490-d61c-443f-a65b-d21fe96a405b>2010-09-20 23:57:08 +0000
committerbbryant <bbryant@f38db490-d61c-443f-a65b-d21fe96a405b>2010-09-20 23:57:08 +0000
commit5ee31ffae17e9bd5209d1890eadcd2845ae87939 (patch)
tree94f036d432c5cab6207b3ed3dbf89ae6766e42e9 /apps
parent20d6474a5546b951a2df5cd66acdf8a60b0495a5 (diff)
Fix misvalidation of meetme pins in conjunction with the 'a' MeetMe flag.
When using the 'a' MeetMe flag and having a user and admin pin setup for your conference, using the user pin would gain you admin priviledges. Also, when no user pin was set, an admin pin was, the 'a' MeetMe flag wasn't used, and the user tried to enter a conference then they were still prompted for a pin and forced to hit #. (closes issue #17908) Reported by: kuj Patches: pins_2.patch uploaded by kuj (license 1111) Tested by: kuj Review: [full review board URL with trailing slash] git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@287758 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_meetme.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 111977beb..28237d9e4 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -2941,9 +2941,13 @@ static int conf_exec(struct ast_channel *chan, void *data)
if (allowretry)
confno[0] = '\0';
} else {
- if (((!ast_strlen_zero(cnf->pin) &&
- !ast_test_flag(&confflags, CONFFLAG_ADMIN)) ||
- !ast_strlen_zero(cnf->pinadmin)) &&
+ if (((!ast_strlen_zero(cnf->pin) &&
+ !ast_test_flag(&confflags, CONFFLAG_ADMIN)) ||
+ (!ast_strlen_zero(cnf->pinadmin) &&
+ ast_test_flag(&confflags, CONFFLAG_ADMIN)) ||
+ (!ast_strlen_zero(cnf->pin) &&
+ ast_strlen_zero(cnf->pinadmin) &&
+ ast_test_flag(&confflags, CONFFLAG_ADMIN))) &&
(!(cnf->users == 0 && cnf->isdynamic))) {
char pin[MAX_PIN] = "";
int j;
@@ -2958,9 +2962,11 @@ static int conf_exec(struct ast_channel *chan, void *data)
res = ast_app_getdata(chan, "conf-getpin", pin + strlen(pin), sizeof(pin) - 1 - strlen(pin), 0);
}
if (res >= 0) {
- if (!strcasecmp(pin, cnf->pin) ||
- (!ast_strlen_zero(cnf->pinadmin) &&
- !strcasecmp(pin, cnf->pinadmin))) {
+ if ((!strcasecmp(pin, cnf->pin) &&
+ (ast_strlen_zero(cnf->pinadmin) ||
+ !ast_test_flag(&confflags, CONFFLAG_ADMIN))) ||
+ (!ast_strlen_zero(cnf->pinadmin) &&
+ !strcasecmp(pin, cnf->pinadmin))) {
/* Pin correct */
allowretry = 0;
if (!ast_strlen_zero(cnf->pinadmin) && !strcasecmp(pin, cnf->pinadmin))