summaryrefslogtreecommitdiff
path: root/apps/app_meetme.c
diff options
context:
space:
mode:
authorBrett Bryant <bbryant@digium.com>2010-09-21 00:04:54 +0000
committerBrett Bryant <bbryant@digium.com>2010-09-21 00:04:54 +0000
commite8de16e970f179419aa6a8563091c249ff6ff769 (patch)
tree4bd84fe0943e755fe980d930d4a2a1cc84d81063 /apps/app_meetme.c
parent61e968d3804f6f78d03a7f53c0763be5fe20e3d4 (diff)
Merged revisions 287760 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r287760 | bbryant | 2010-09-20 20:00:23 -0400 (Mon, 20 Sep 2010) | 30 lines Merged revisions 287759 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r287759 | bbryant | 2010-09-20 19:58:26 -0400 (Mon, 20 Sep 2010) | 23 lines Merged revisions 287758 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r287758 | bbryant | 2010-09-20 19:57:08 -0400 (Mon, 20 Sep 2010) | 16 lines 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: https://origsvn.digium.com/svn/asterisk/trunk@287763 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_meetme.c')
-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 2f64a9b78..38ada22a7 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -4298,9 +4298,13 @@ static int conf_exec(struct ast_channel *chan, const char *data)
res = -1;
}
} else {
- if (((!ast_strlen_zero(cnf->pin) &&
- !ast_test_flag64(&confflags, CONFFLAG_ADMIN)) ||
- !ast_strlen_zero(cnf->pinadmin)) &&
+ if (((!ast_strlen_zero(cnf->pin) &&
+ !ast_test_flag64(&confflags, CONFFLAG_ADMIN)) ||
+ (!ast_strlen_zero(cnf->pinadmin) &&
+ ast_test_flag64(&confflags, CONFFLAG_ADMIN)) ||
+ (!ast_strlen_zero(cnf->pin) &&
+ ast_strlen_zero(cnf->pinadmin) &&
+ ast_test_flag64(&confflags, CONFFLAG_ADMIN))) &&
(!(cnf->users == 0 && cnf->isdynamic))) {
char pin[MAX_PIN] = "";
int j;
@@ -4315,9 +4319,11 @@ static int conf_exec(struct ast_channel *chan, const char *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_flag64(&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)) {