]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 287759 via svnmerge from
authorBrett Bryant <bbryant@digium.com>
Tue, 21 Sep 2010 00:00:23 +0000 (00:00 +0000)
committerBrett Bryant <bbryant@digium.com>
Tue, 21 Sep 2010 00:00:23 +0000 (00:00 +0000)
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/branches/1.8@287760 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_meetme.c

index 2f64a9b784c0455323dbc6718fbadf0a82d8beea..38ada22a78eac217827a863b8554e0fda1582787 100644 (file)
@@ -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)) {