From cd52938f9418ff07b2266b29adce1c3157439094 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Mon, 26 Oct 2009 16:24:51 +0000 Subject: [PATCH] ldapsearch: always deref --- lam/lib/account.inc | 2 +- lam/lib/cache.inc | 2 +- lam/lib/export.inc | 2 +- lam/lib/ldap.inc | 4 ++-- lam/lib/modules.inc | 2 +- lam/lib/modules/ddns.inc | 2 +- lam/lib/modules/fixed_ip.inc | 6 ++++-- lam/lib/modules/kolabUser.inc | 2 +- lam/lib/types/dhcp.inc | 2 +- lam/lib/types/group.inc | 2 +- lam/lib/types/user.inc | 4 ++-- lam/templates/delete.php | 2 +- lam/templates/initsuff.php | 4 ++-- lam/templates/lists/userlink.php | 2 +- lam/templates/login.php | 2 +- lam/templates/main.php | 2 +- 16 files changed, 22 insertions(+), 20 deletions(-) diff --git a/lam/lib/account.inc b/lam/lib/account.inc index eb17f88f..9387e397 100644 --- a/lam/lib/account.inc +++ b/lam/lib/account.inc @@ -310,7 +310,7 @@ function search_domains($server = null, $suffix = null) { if ($server == null) { $server = $_SESSION['ldap']->server(); } - $sr = @ldap_search($server, escapeDN($suffix), "objectClass=sambaDomain", $attr); + $sr = @ldap_search($server, escapeDN($suffix), "objectClass=sambaDomain", $attr, 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $units = ldap_get_entries($server, $sr); // delete count entry diff --git a/lam/lib/cache.inc b/lam/lib/cache.inc index d25b6202..9535016f 100644 --- a/lam/lib/cache.inc +++ b/lam/lib/cache.inc @@ -183,7 +183,7 @@ class cache { // Get Data from ldap $search = $this->attributes[$scope]; $search[] = 'objectClass'; - $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($suffix), 'objectClass=*', $search, 0); + $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($suffix), 'objectClass=*', $search, 0, 0, 0, LDAP_DEREF_ALWAYS); if ($result) { // Write search result in array $entry = @ldap_first_entry($_SESSION['ldap']->server(), $result); diff --git a/lam/lib/export.inc b/lam/lib/export.inc index 81962360..adfe9372 100755 --- a/lam/lib/export.inc +++ b/lam/lib/export.inc @@ -285,7 +285,7 @@ class PlaLdapExporter extends PlaAbstractExporter{ elseif( $this->scope == 'one' ) $this->results = @ldap_list($this->ds, $this->base_dn, $this->queryFilter, $this->attributes); else // scope == 'sub' - $this->results = @ldap_search($this->ds, $this->base_dn, $this->queryFilter, $this->attributes); + $this->results = @ldap_search($this->ds, $this->base_dn, $this->queryFilter, $this->attributes, 0, 0, 0, LDAP_DEREF_ALWAYS); // if no result, there is a something wrong if( ! $this->results ) diff --git a/lam/lib/ldap.inc b/lam/lib/ldap.inc index 98842947..ed59931f 100644 --- a/lam/lib/ldap.inc +++ b/lam/lib/ldap.inc @@ -3,7 +3,7 @@ $Id$ This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam) - Copyright (C) 2003 - 2006 Roland Gruber + Copyright (C) 2003 - 2009 Roland Gruber This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -134,7 +134,7 @@ class Ldap{ */ function search_units($suffix) { $ret = array(); - $sr = @ldap_search($this->server(), escapeDN($suffix), "objectClass=organizationalunit", array("DN")); + $sr = @ldap_search($this->server(), escapeDN($suffix), "objectClass=organizationalunit", array("DN"), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $units = ldap_get_entries($this->server, $sr); unset($units['count']); diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc index 9441eb91..b76d75f5 100644 --- a/lam/lib/modules.inc +++ b/lam/lib/modules.inc @@ -1624,7 +1624,7 @@ class accountContainer { $this->module = array(); $modules = $_SESSION['config']->get_AccountModules($this->type); $search = substr($dn, 0, strpos($dn, ',')); - $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), escapeDN($search)); + $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), escapeDN($search), array(), 0, 0, 0, LDAP_DEREF_ALWAYS); // TODO use ldap_read() if (!$result) { return array(array("ERROR", _("Unable to load LDAP entry:") . " " . $dn, ldap_error($_SESSION['ldap']->server()))); } diff --git a/lam/lib/modules/ddns.inc b/lam/lib/modules/ddns.inc index 4c57f85f..fc05787b 100644 --- a/lam/lib/modules/ddns.inc +++ b/lam/lib/modules/ddns.inc @@ -187,7 +187,7 @@ class ddns extends baseModule { $ldap = $_SESSION['ldap']->server(); $dn = $_SESSION['config']->get_suffix('dhcp'); - $search = @ldap_search($ldap,$dn,"dhcpStatements=ddns-update-style interim"); + $search = @ldap_search($ldap,$dn,"dhcpStatements=ddns-update-style interim", array(), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($search) { $info = @ldap_get_entries($ldap,$search); if ($info && ($info['count'] > 0)) { diff --git a/lam/lib/modules/fixed_ip.inc b/lam/lib/modules/fixed_ip.inc index a90b4af8..1d6f61e7 100644 --- a/lam/lib/modules/fixed_ip.inc +++ b/lam/lib/modules/fixed_ip.inc @@ -192,7 +192,8 @@ class fixed_ip extends baseModule { if ($_SESSION['account']->getAccountModule('dhcp_settings')->dn!=$_SESSION['config']->get_suffix('dhcp')) { - $sr = @ldap_search($_SESSION['ldap']->server(),'cn='.$_SESSION['account']->getAccountModule('dhcp_settings')->attributes['cn'][0].','.$_SESSION['config']->get_suffix('dhcp'),'(objectClass=dhcpHost)'); + $sr = @ldap_search($_SESSION['ldap']->server(),'cn='.$_SESSION['account']->getAccountModule('dhcp_settings')->attributes['cn'][0].','.$_SESSION['config']->get_suffix('dhcp'), + '(objectClass=dhcpHost)', array(), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $entries = ldap_get_entries($_SESSION['ldap']->server(), $sr); for ($i=0; $i < $entries["count"]; $i++) { @@ -345,7 +346,8 @@ class fixed_ip extends baseModule { $pcs = array(); foreach($this->fixed_ip AS $id=>$arr) { // pc name - $result = @ldap_search($_SESSION['ldap']->server(),"cn=".$_SESSION['account']->getAccountModule('dhcp_settings')->attributes['cn'][0].",".$_SESSION['config']->get_Suffix('dhcp'),'(cn='.$_POST['pc_'.$id].')'); + $result = @ldap_search($_SESSION['ldap']->server(),"cn=".$_SESSION['account']->getAccountModule('dhcp_settings')->attributes['cn'][0].",".$_SESSION['config']->get_Suffix('dhcp'), + '(cn='.$_POST['pc_'.$id].')', array(), 0, 0, 0, LDAP_DEREF_ALWAYS); $num = (@ldap_get_entries($_SESSION['ldap']->server(), $result)=="")?0:ldap_get_entries($_SESSION['ldap']->server(), $result); $pcError = ""; if (!$this->processed) { diff --git a/lam/lib/modules/kolabUser.inc b/lam/lib/modules/kolabUser.inc index 3d9865cb..5da44634 100644 --- a/lam/lib/modules/kolabUser.inc +++ b/lam/lib/modules/kolabUser.inc @@ -824,7 +824,7 @@ class kolabUser extends baseModule { // delegates if (in_array('kolabDelegate', $fields)) { $delegates = array(); - $sr = @ldap_search($_SESSION['ldapHandle'], escapeDN($this->selfServiceSettings->LDAPSuffix), '(&(objectClass=inetOrgPerson)(mail=*))', array('mail')); + $sr = @ldap_search($_SESSION['ldapHandle'], escapeDN($this->selfServiceSettings->LDAPSuffix), '(&(objectClass=inetOrgPerson)(mail=*))', array('mail'), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $result = ldap_get_entries($_SESSION['ldapHandle'], $sr); for ($i = 0; $i < $result['count']; $i++) { diff --git a/lam/lib/types/dhcp.inc b/lam/lib/types/dhcp.inc index e9d49857..4ff1c27f 100644 --- a/lam/lib/types/dhcp.inc +++ b/lam/lib/types/dhcp.inc @@ -140,7 +140,7 @@ class lamDHCPList extends lamList { $ldap = $_SESSION['ldap']; $suffix = $_SESSION['config']->get_Suffix('dhcp'); - $sr = @ldap_search($ldap->server(),"cn=".$entry['cn'][0].",".$suffix,"objectClass=dhcpHost"); + $sr = @ldap_search($ldap->server(),"cn=".$entry['cn'][0].",".$suffix,"objectClass=dhcpHost", array(), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $get = ldap_get_entries($ldap->server(),$sr); diff --git a/lam/lib/types/group.inc b/lam/lib/types/group.inc index 73acac17..e33ad142 100644 --- a/lam/lib/types/group.inc +++ b/lam/lib/types/group.inc @@ -242,7 +242,7 @@ class lamGroupList extends lamList { for ($i = 0; $i < sizeof($this->entries); $i++) { $gid = $this->entries[$i]['gidnumber'][0]; $filter = "(&(&" . $module_filter . ")(gidNumber=" . $gid . "))"; - $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($module_suffix), $filter, $attrs); + $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($module_suffix), $filter, $attrs, 0, 0, 0, LDAP_DEREF_ALWAYS); if (ldap_errno($_SESSION["ldap"]->server()) == 4) { StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); $this->refresh_primary = true; diff --git a/lam/lib/types/user.inc b/lam/lib/types/user.inc index 94e66afa..86808a94 100644 --- a/lam/lib/types/user.inc +++ b/lam/lib/types/user.inc @@ -167,7 +167,7 @@ class lamUserList extends lamList { $grp_suffix = $_SESSION['config']->get_Suffix('group'); $filter = "objectClass=posixGroup"; $attrs = array("cn", "gidNumber"); - $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($grp_suffix), $filter, $attrs); + $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($grp_suffix), $filter, $attrs, 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $info = @ldap_get_entries($_SESSION["ldap"]->server(), $sr); unset($info['count']); // delete count entry @@ -200,7 +200,7 @@ class lamUserList extends lamList { elseif ($attribute == "jpegphoto") { if (sizeof($entry[$attribute][0]) < 100) { // looks like we have read broken binary data, reread photo - $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($entry['dn']), $attribute . "=*", array($attribute)); + $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($entry['dn']), $attribute . "=*", array($attribute), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($result) { $tempEntry = @ldap_first_entry($_SESSION['ldap']->server(), $result); if ($tempEntry) { diff --git a/lam/templates/delete.php b/lam/templates/delete.php index f6fc928f..9000f4d9 100644 --- a/lam/templates/delete.php +++ b/lam/templates/delete.php @@ -254,7 +254,7 @@ if ($_POST['delete']) { */ function getChildCount($dn) { $return = 0; - $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), 'objectClass=*', array('dn'), 0); + $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), 'objectClass=*', array('dn'), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $entries = ldap_get_entries($_SESSION['ldap']->server(), $sr); $return = $entries['count'] - 1; diff --git a/lam/templates/initsuff.php b/lam/templates/initsuff.php index 13c617da..8cfc12d6 100644 --- a/lam/templates/initsuff.php +++ b/lam/templates/initsuff.php @@ -58,7 +58,7 @@ if ($_POST['add_suff'] || $_POST['cancel']) { // add entries for ($i = 0; $i < sizeof($new_suff); $i++) { // check if entry is already present - $info = @ldap_search($_SESSION['ldap']->server(), escapeDN($new_suff[$i]), "", array()); + $info = @ldap_search($_SESSION['ldap']->server(), escapeDN($new_suff[$i]), "", array(), 0, 0, 0, LDAP_DEREF_ALWAYS); $res = @ldap_get_entries($_SESSION['ldap']->server(), $info); if ($res) continue; $suff = $new_suff[$i]; @@ -100,7 +100,7 @@ if ($_POST['add_suff'] || $_POST['cancel']) { // create missing entries for ($k = sizeof($subsuffs) - 1; $k >= 0; $k--) { // check if subsuffix is present - $info = @ldap_search($_SESSION['ldap']->server(), escapeDN($subsuffs[$k]), "", array()); + $info = @ldap_search($_SESSION['ldap']->server(), escapeDN($subsuffs[$k]), "", array(), 0, 0, 0, LDAP_DEREF_ALWAYS); $res = @ldap_get_entries($_SESSION['ldap']->server(), $info); if (!$res) { $suffarray = explode(",", $subsuffs[$k]); diff --git a/lam/templates/lists/userlink.php b/lam/templates/lists/userlink.php index a58a331c..afb5fb91 100644 --- a/lam/templates/lists/userlink.php +++ b/lam/templates/lists/userlink.php @@ -77,7 +77,7 @@ else { function search_username($name) { $filter = "(uid=$name)"; $attrs = array(); - $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($_SESSION['config']->get_Suffix('user')), $filter, $attrs); + $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($_SESSION['config']->get_Suffix('user')), $filter, $attrs, 0, 0, 0, LDAP_DEREF_ALWAYS); if ($sr) { $info = ldap_get_entries($_SESSION['ldap']->server(), $sr); // return only first DN entry diff --git a/lam/templates/login.php b/lam/templates/login.php index 97c26bda..ae6bad0e 100644 --- a/lam/templates/login.php +++ b/lam/templates/login.php @@ -437,7 +437,7 @@ if(!empty($_POST['checklogin'])) { $searchFilter = str_replace('%USER%', $username ,$searchFilter); $searchSuccess = true; $searchError = ''; - $searchResult = @ldap_search($searchLDAP->server(), $_SESSION['config']->getLoginSearchSuffix(), $searchFilter, array('dn')); + $searchResult = @ldap_search($searchLDAP->server(), $_SESSION['config']->getLoginSearchSuffix(), $searchFilter, array('dn'), 0, 0, 0, LDAP_DEREF_ALWAYS); if ($searchResult) { $searchInfo = @ldap_get_entries($searchLDAP->server(), $searchResult); if ($searchInfo) { diff --git a/lam/templates/main.php b/lam/templates/main.php index cc239df6..2c1b4329 100644 --- a/lam/templates/main.php +++ b/lam/templates/main.php @@ -49,7 +49,7 @@ $new_suffs = array(); // get list of active types $types = $_SESSION['config']->get_ActiveTypes(); for ($i = 0; $i < sizeof($types); $i++) { - $info = @ldap_search($_SESSION['ldap']->server(), escapeDN($conf->get_Suffix($types[$i])), "(objectClass=*)", array('objectClass')); + $info = @ldap_search($_SESSION['ldap']->server(), escapeDN($conf->get_Suffix($types[$i])), "(objectClass=*)", array('objectClass'), 0, 0, 0, LDAP_DEREF_ALWAYS); $res = @ldap_get_entries($_SESSION['ldap']->server(), $info); if (!$res && !in_array($conf->get_Suffix($types[$i]), $new_suffs)) $new_suffs[] = $conf->get_Suffix($types[$i]); }