MDL-28402 LDAP configuration values being stored in lower case, causing misconfiguration
authorIñaki Arenaza <iarenaza@mondragon.edu>
Sun, 31 Jul 2011 15:27:57 +0000 (17:27 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Sun, 28 Aug 2011 23:07:30 +0000 (01:07 +0200)
It looks like array_change_key_case() does not work recursively, so we
were not actually lowercasing the expiration attribute key. As the
configuration setting is always lowercase they didn't match.

auth/ldap/auth.php

index 9f2f03c..9f88bbd 100644 (file)
@@ -579,16 +579,17 @@ class auth_plugin_ldap extends auth_plugin_base {
         $sr = ldap_read($ldapconnection, $user_dn, '(objectClass=*)', $search_attribs);
         if ($sr)  {
             $info = ldap_get_entries_moodle($ldapconnection, $sr);
-            $info = array_change_key_case($info, CASE_LOWER);
-            if (!empty ($info) and !empty($info[0][$this->config->expireattr][0])) {
-                $expiretime = $this->ldap_expirationtime2unix($info[0][$this->config->expireattr][0], $ldapconnection, $user_dn);
-                if ($expiretime != 0) {
-                    $now = time();
-                    if ($expiretime > $now) {
-                        $result = ceil(($expiretime - $now) / DAYSECS);
-                    }
-                    else {
-                        $result = floor(($expiretime - $now) / DAYSECS);
+            if (!empty ($info)) {
+                $info = array_change_key_case($info[0], CASE_LOWER);
+                if (!empty($info[$this->config->expireattr][0])) {
+                    $expiretime = $this->ldap_expirationtime2unix($info[$this->config->expireattr][0], $ldapconnection, $user_dn);
+                    if ($expiretime != 0) {
+                        $now = time();
+                        if ($expiretime > $now) {
+                            $result = ceil(($expiretime - $now) / DAYSECS);
+                        } else {
+                            $result = floor(($expiretime - $now) / DAYSECS);
+                        }
                     }
                 }
             }