ldapsearch: always deref

This commit is contained in:
Roland Gruber 2009-10-26 16:24:51 +00:00
parent 18f9658c9f
commit cd52938f94
16 changed files with 22 additions and 20 deletions

View File

@ -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

View File

@ -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);

View File

@ -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 )

View File

@ -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']);

View File

@ -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())));
}

View File

@ -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)) {

View File

@ -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) {

View File

@ -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++) {

View File

@ -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);

View File

@ -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;

View File

@ -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) {

View File

@ -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;

View File

@ -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]);

View File

@ -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

View File

@ -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) {

View File

@ -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]);
}