From: Arthur Schiwon Date: Mon, 14 May 2012 10:25:10 +0000 (+0200) Subject: LDAP: no whitespaces after the , in the DNs, resolves conflicts with some servers X-Git-Tag: v4.0.0RC2~72 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2e3467398920249471ec0b4b526fe71c51f7071c;p=nextcloud-server.git LDAP: no whitespaces after the , in the DNs, resolves conflicts with some servers --- diff --git a/apps/user_ldap/lib_ldap.php b/apps/user_ldap/lib_ldap.php index e8d91d0e037..b2d81673795 100755 --- a/apps/user_ldap/lib_ldap.php +++ b/apps/user_ldap/lib_ldap.php @@ -185,6 +185,7 @@ class OC_LDAP { } static public function dn2ocname($dn, $ldapname = null, $isUser = true) { + $dn = self::sanitizeDN($dn); $table = self::getMapTable($isUser); if($isUser) { $nameAttribute = self::conf('ldapUserDisplayName'); @@ -362,6 +363,7 @@ class OC_LDAP { */ static private function mapComponent($dn, $ocname, $isUser = true) { $table = self::getMapTable($isUser); + $dn = self::sanitizeDN($dn); $sqliteAdjustment = ''; $dbtype = OCP\Config::getSystemValue('dbtype'); @@ -488,7 +490,7 @@ class OC_LDAP { if($key != 'dn'){ $selection[$i][$key] = $item[$key][0]; } else { - $selection[$i][$key] = $item[$key]; + $selection[$i][$key] = self::sanitizeDN($item[$key]); } } @@ -503,7 +505,11 @@ class OC_LDAP { $key = strtolower($attr[0]); if(isset($item[$key])) { - $selection[] = $item[$key]; + if($key == 'dn') { + $selection[] = self::sanitizeDN($item[$key]); + } else { + $selection[] = $item[$key]; + } } } @@ -514,6 +520,13 @@ class OC_LDAP { return $findings; } + static private function sanitizeDN($dn) { + //OID sometimes gives back DNs with whitespace after the comma a la "uid=foo, cn=bar, dn=..." We need to tackle this! + $dn = preg_replace('/,\s+/',',',$dn); + + return $dn; + } + /** * @brief combines the input filters with AND * @param $filters array, the filters to connect