packages: ldap-account-manager/ldap-account-manager-sizelimit.patch (NEW) -...

baggins baggins at pld-linux.org
Sun Feb 14 13:17:57 CET 2010


Author: baggins                      Date: Sun Feb 14 12:17:57 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- add sizelimit config option for LDAP searches

---- Files affected:
packages/ldap-account-manager:
   ldap-account-manager-sizelimit.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/ldap-account-manager/ldap-account-manager-sizelimit.patch
diff -u /dev/null packages/ldap-account-manager/ldap-account-manager-sizelimit.patch:1.1
--- /dev/null	Sun Feb 14 13:17:57 2010
+++ packages/ldap-account-manager/ldap-account-manager-sizelimit.patch	Sun Feb 14 13:17:52 2010
@@ -0,0 +1,706 @@
+diff -ur ldap-account-manager-2.9.0/lib/account.inc ldap-account-manager-2.9.0-limit/lib/account.inc
+--- ldap-account-manager-2.9.0/lib/account.inc	2010-02-14 12:59:38.518724527 +0100
++++ ldap-account-manager-2.9.0-limit/lib/account.inc	2010-02-14 12:35:31.948722137 +0100
+@@ -310,7 +310,7 @@
+ 	if ($server == null) {
+ 		$server = $_SESSION['ldap']->server();
+ 	}
+-	$sr = @ldap_search($server, escapeDN($suffix), "objectClass=sambaDomain", $attr, 0, 0, 0, LDAP_DEREF_NEVER);
++	$sr = @ldap_search($server, escapeDN($suffix), "objectClass=sambaDomain", $attr, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 	if ($sr) {
+ 		$units = ldap_get_entries($server, $sr);
+ 		// delete count entry
+@@ -566,7 +566,7 @@
+ 	}
+ 	for ($s = 0; $s < sizeof($scopes); $s++) {
+ 		// search LDAP
+-		$sr = @ldap_search($_SESSION['ldap']->server(), $_SESSION['config']->get_Suffix($scopes[$s]), $filter, $attributes, 0, 0, 0, LDAP_DEREF_NEVER);
++		$sr = @ldap_search($_SESSION['ldap']->server(), $_SESSION['config']->get_Suffix($scopes[$s]), $filter, $attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 		if ($sr) {
+ 			$entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ 			if ($entries) {
+diff -ur ldap-account-manager-2.9.0/lib/cache.inc ldap-account-manager-2.9.0-limit/lib/cache.inc
+--- ldap-account-manager-2.9.0/lib/cache.inc	2009-11-26 14:32:48.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/cache.inc	2010-02-14 12:35:48.732721999 +0100
+@@ -146,7 +146,7 @@
+ 				// Get Data from ldap
+ 				$search = $this->attributes[$scope];
+ 				$search[] = 'objectClass';
+-				$result = @ldap_search($_SESSION['ldap']->server(), escapeDN($suffix), 'objectClass=*', $search, 0, 0, 0, LDAP_DEREF_NEVER);
++				$result = @ldap_search($_SESSION['ldap']->server(), escapeDN($suffix), 'objectClass=*', $search, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 				if ($result) {
+ 					// Write search result in array
+ 					$entry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
+diff -ur ldap-account-manager-2.9.0/lib/config.inc ldap-account-manager-2.9.0-limit/lib/config.inc
+--- ldap-account-manager-2.9.0/lib/config.inc	2010-02-14 12:59:38.518724527 +0100
++++ ldap-account-manager-2.9.0-limit/lib/config.inc	2010-02-14 12:18:16.795969880 +0100
+@@ -224,6 +224,9 @@
+ 	/** LDAP cache timeout */
+ 	private $cachetimeout;
+ 
++	/** LDAP search size limit */
++	private $sizelimit;
++
+ 	/** Active account types */
+ 	private $activeTypes = "user,group,host,smbDomain";
+ 
+@@ -244,7 +247,7 @@
+ 
+ 	/** List of all settings in config file */
+ 	private $settings = array("ServerURL", "useTLS", "Passwd", "Admins", "treesuffix",
+-		"defaultLanguage", "scriptPath", "scriptServer", "scriptRights", "cachetimeout",
++		"defaultLanguage", "scriptPath", "scriptServer", "scriptRights", "cachetimeout", "sizelimit",
+ 		"modules", "activeTypes", "types", "accessLevel", 'loginMethod', 'loginSearchSuffix',
+ 		'loginSearchFilter');
+ 
+@@ -389,6 +392,7 @@
+ 			if (!in_array("scriptServer", $saved)) array_push($file_array, "\n\n# Servers of external script\n" . "scriptServer: " . $this->scriptServer . "\n");
+ 			if (!in_array("scriptRights", $saved)) array_push($file_array, "\n\n# Access rights for home directories\n" . "scriptRights: " . $this->scriptRights . "\n");
+ 			if (!in_array("cachetimeout", $saved)) array_push($file_array, "\n\n# Number of minutes LAM caches LDAP searches.\n" . "cacheTimeout: " . $this->cachetimeout . "\n");
++			if (!in_array("sizelimit", $saved)) array_push($file_array, "\n\n# Number of entries fetched in LDAP searches.\n" . "sizeLimit: " . $this->sizelimit . "\n");
+ 			if (!in_array("activeTypes", $saved)) array_push($file_array, "\n\n# List of active account types.\n" . "activeTypes: " . $this->activeTypes . "\n");
+ 			if (!in_array("accessLevel", $saved)) array_push($file_array, "\n\n# Access level for this profile.\n" . "accessLevel: " . $this->accessLevel . "\n");
+ 			if (!in_array("loginMethod", $saved)) array_push($file_array, "\n\n# Login method.\n" . "loginMethod: " . $this->loginMethod . "\n");
+@@ -793,6 +797,16 @@
+ 	}
+ 
+ 	/**
++	* Returns the LDAP search size limit in entries
++	*
++	* @return integer size limit
++	*/
++	public function get_sizeLimit() {
++		if (isset($this->sizelimit)) return $this->sizelimit;
++		else return 0;
++	}
++
++	/**
+ 	* Sets the LDAP cache timeout in minutes (0,1,2,5,10,15)
+ 	*
+ 	* @param integer $value new cache timeout
+@@ -807,6 +821,20 @@
+ 	}
+ 
+ 	/**
++	* Sets the LDAP search size limit in entries
++	*
++	* @param integer $value new size limit
++	* @return boolean true if $value has correct format
++	*/
++	public function set_sizeLimit($value) {
++		if (is_numeric($value) && ($value > -1)) {
++			$this->sizelimit = $value;
++		}
++		else return false;
++		return true;
++	}
++
++	/**
+ 	* Returns an array of all selected account modules
+ 	*
+ 	* @param string $scope account type
+diff -ur ldap-account-manager-2.9.0/lib/export.inc ldap-account-manager-2.9.0-limit/lib/export.inc
+--- ldap-account-manager-2.9.0/lib/export.inc	2009-10-28 17:35:23.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/export.inc	2010-02-14 12:37:25.690972919 +0100
+@@ -281,11 +281,11 @@
+ 
+     // get the data to be exported
+     if( $this->scope == 'base' )
+-      $this->results = @ldap_read($this->ds, $this->base_dn, $this->queryFilter,$this->attributes);
++      $this->results = @ldap_read($this->ds, $this->base_dn, $this->queryFilter,$this->attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+     elseif( $this->scope == 'one' )
+-      $this->results = @ldap_list($this->ds, $this->base_dn, $this->queryFilter, $this->attributes);
++      $this->results = @ldap_list($this->ds, $this->base_dn, $this->queryFilter, $this->attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+     else // scope == 'sub'
+-      $this->results = @ldap_search($this->ds, $this->base_dn, $this->queryFilter, $this->attributes, 0, 0, 0, LDAP_DEREF_NEVER);
++      $this->results = @ldap_search($this->ds, $this->base_dn, $this->queryFilter, $this->attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+     
+     // if no result, there is a something wrong
+     if( ! $this->results ) 
+diff -ur ldap-account-manager-2.9.0/lib/lamdaemon.inc ldap-account-manager-2.9.0-limit/lib/lamdaemon.inc
+--- ldap-account-manager-2.9.0/lib/lamdaemon.inc	2009-10-27 19:45:22.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/lamdaemon.inc	2010-02-14 12:38:12.824973201 +0100
+@@ -51,7 +51,7 @@
+ 		$handle = @ssh2_connect($server);
+ 	}
+ 	if ($handle) {
+-		$sr = @ldap_read($_SESSION['ldap']->server(), $credentials[0], "objectClass=posixAccount", array('uid'));
++		$sr = @ldap_read($_SESSION['ldap']->server(), $credentials[0], "objectClass=posixAccount", array('uid'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 		if (!$sr) {
+ 			$return = array("ERROR," . _("Your LAM admin user must be a valid Unix account to work with lamdaemon!") . ",");
+ 			return $return;
+diff -ur ldap-account-manager-2.9.0/lib/ldap.inc ldap-account-manager-2.9.0-limit/lib/ldap.inc
+--- ldap-account-manager-2.9.0/lib/ldap.inc	2010-02-14 12:59:38.548720793 +0100
++++ ldap-account-manager-2.9.0-limit/lib/ldap.inc	2010-02-14 12:38:30.433719189 +0100
+@@ -135,7 +135,7 @@
+ 	*/
+ 	function search_units($suffix) {
+ 		$ret = array();
+-		$sr = @ldap_search($this->server(), escapeDN($suffix), "objectClass=organizationalunit", array("DN"), 0, 0, 0, LDAP_DEREF_NEVER);
++		$sr = @ldap_search($this->server(), escapeDN($suffix), "objectClass=organizationalunit", array("DN"), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 		if ($sr) {
+ 			$units = ldap_get_entries($this->server, $sr);
+ 			unset($units['count']);
+diff -ur ldap-account-manager-2.9.0/lib/lists.inc ldap-account-manager-2.9.0-limit/lib/lists.inc
+--- ldap-account-manager-2.9.0/lib/lists.inc	2009-12-06 19:34:24.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/lists.inc	2010-02-14 12:38:45.041722448 +0100
+@@ -826,7 +826,7 @@
+ 		$module_filter = get_ldap_filter($this->type);  // basic filter is provided by modules
+ 		$filter = "(&" . $module_filter  . ")";
+ 		$attrs = $this->attrArray;
+-		$sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($this->suffix), $filter, $attrs, 0, 0, 0, LDAP_DEREF_NEVER);
++		$sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($this->suffix), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 		if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
+ 			StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See the manual for instructions to solve this problem."));
+ 		}
+diff -ur ldap-account-manager-2.9.0/lib/modules/asteriskAccount.inc ldap-account-manager-2.9.0-limit/lib/modules/asteriskAccount.inc
+--- ldap-account-manager-2.9.0/lib/modules/asteriskAccount.inc	2009-12-16 19:56:51.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/asteriskAccount.inc	2010-02-14 12:39:02.517970188 +0100
+@@ -222,7 +222,7 @@
+ 				$filter = '(& (objectClass=AsteriskSIPUser) (AstAccountCallerID=' . $this->attributes['AstAccountCallerID'][0] .'))';
+ 				$ldapc =  $_SESSION['ldap']->server();
+ 				$attributes = array("DN", "AstAccountCallerID");
+-				$res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,0,0,LDAP_DEREF_NEVER);
++				$res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,$_SESSION['config']->get_sizeLimit(),0,LDAP_DEREF_NEVER);
+ 				if (!$res) {
+ 					return array(array("ERROR", _("Unable to load LDAP entry:") . " " .$searchroot, ldap_error($_SESSION['ldap']->server())));
+ 				}
+diff -ur ldap-account-manager-2.9.0/lib/modules/asteriskExtension.inc ldap-account-manager-2.9.0-limit/lib/modules/asteriskExtension.inc
+--- ldap-account-manager-2.9.0/lib/modules/asteriskExtension.inc	2009-12-16 19:56:51.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/asteriskExtension.inc	2010-02-14 12:39:19.805970325 +0100
+@@ -256,7 +256,7 @@
+ 		$filter = 'objectClass=AsteriskSIPUser';
+ 		$ldapc = $_SESSION['ldap']->server();
+ 		$attributes = array("DN", "cn");
+-		$res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,0,0,LDAP_DEREF_NEVER);
++		$res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,$_SESSION['config']->get_sizeLimit(),0,LDAP_DEREF_NEVER);
+ 		if (!$res) {
+ 			return array(array("ERROR", _("Unable to load LDAP entry:") . " " .$searchroot, ldap_error($_SESSION['ldap']->server())));
+ 		}
+@@ -355,7 +355,7 @@
+ 			$filter = '(& (objectClass=AsteriskExtension) (AstExtension=' . $this->attributes['AstExtension'][0] .') (AstPriority=' . $this->attributes['AstPriority'][0] .') )';
+ 			$ldapc = $_SESSION['ldap']->server();
+ 			$attributes = array("DN");
+-			$res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,0,0,LDAP_DEREF_NEVER);
++			$res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,$_SESSION['config']->get_sizeLimit(),0,LDAP_DEREF_NEVER);
+ 			if (!$res) {
+ 				return array(array("ERROR", _("Unable to load LDAP entry:") . " " .$searchroot, ldap_error($_SESSION['ldap']->server())));
+ 			}
+diff -ur ldap-account-manager-2.9.0/lib/modules/ddns.inc ldap-account-manager-2.9.0-limit/lib/modules/ddns.inc
+--- ldap-account-manager-2.9.0/lib/modules/ddns.inc	2009-11-24 19:54:43.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/ddns.inc	2010-02-14 12:39:29.047722523 +0100
+@@ -187,7 +187,7 @@
+ 		$ldap = $_SESSION['ldap']->server();
+ 		$dn = $_SESSION['config']->get_suffix('dhcp');
+ 		
+-		$search = @ldap_search($ldap,$dn,"dhcpStatements=ddns-update-style interim", array(), 0, 0, 0, LDAP_DEREF_NEVER);
++		$search = @ldap_search($ldap,$dn,"dhcpStatements=ddns-update-style interim", array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 		if ($search) {
+ 			$info = @ldap_get_entries($ldap,$search);
+ 			if ($info && ($info['count'] > 0)) {
+diff -ur ldap-account-manager-2.9.0/lib/modules/fixed_ip.inc ldap-account-manager-2.9.0-limit/lib/modules/fixed_ip.inc
+--- ldap-account-manager-2.9.0/lib/modules/fixed_ip.inc	2009-11-25 13:08:08.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/fixed_ip.inc	2010-02-14 12:39:49.680721831 +0100
+@@ -195,7 +195,7 @@
+ 	    if ($this->getAccountContainer()->dn_orig!=$_SESSION['config']->get_suffix('dhcp')) {
+ 	    
+ 		    $sr = @ldap_search($_SESSION['ldap']->server(),'cn='.$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0].','.$_SESSION['config']->get_suffix('dhcp'),
+-		    		'(objectClass=dhcpHost)', array(), 0, 0, 0, LDAP_DEREF_NEVER);
++		    		'(objectClass=dhcpHost)', array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 		    if ($sr) {
+ 		        $entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ 		        if ($entries) {
+@@ -353,7 +353,7 @@
+ 	        foreach($this->fixed_ip AS $id=>$arr) {
+ 				// pc name
+ 				$result = @ldap_search($_SESSION['ldap']->server(),"cn=".$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0].",".$_SESSION['config']->get_Suffix('dhcp'),
+-							'(cn='.$_POST['pc_'.$id].')', array(), 0, 0, 0, LDAP_DEREF_NEVER);
++							'(cn='.$_POST['pc_'.$id].')', array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 	            $num = (@ldap_get_entries($_SESSION['ldap']->server(), $result)=="")?0:ldap_get_entries($_SESSION['ldap']->server(), $result);
+ 				$pcError = "";
+ 				if (!$this->processed) {
+diff -ur ldap-account-manager-2.9.0/lib/modules/kolabUser.inc ldap-account-manager-2.9.0-limit/lib/modules/kolabUser.inc
+--- ldap-account-manager-2.9.0/lib/modules/kolabUser.inc	2009-10-28 17:35:22.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/kolabUser.inc	2010-02-14 12:40:06.587970654 +0100
+@@ -824,7 +824,7 @@
+ 		// delegates
+ 		if (in_array('kolabDelegate', $fields)) {
+ 			$delegates = array();
+-			$sr = @ldap_search($_SESSION['ldapHandle'], escapeDN($this->selfServiceSettings->LDAPSuffix), '(&(objectClass=inetOrgPerson)(mail=*))', array('mail'), 0, 0, 0, LDAP_DEREF_NEVER);
++			$sr = @ldap_search($_SESSION['ldapHandle'], escapeDN($this->selfServiceSettings->LDAPSuffix), '(&(objectClass=inetOrgPerson)(mail=*))', array('mail'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 			if ($sr) {
+ 				$result = ldap_get_entries($_SESSION['ldapHandle'], $sr);
+ 				for ($i = 0; $i < $result['count']; $i++) {
+diff -ur ldap-account-manager-2.9.0/lib/modules/phpGroupwareUser.inc ldap-account-manager-2.9.0-limit/lib/modules/phpGroupwareUser.inc
+--- ldap-account-manager-2.9.0/lib/modules/phpGroupwareUser.inc	2009-11-24 12:39:41.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/phpGroupwareUser.inc	2010-02-14 12:40:29.111722141 +0100
+@@ -321,7 +321,7 @@
+ 			(in_array('phpgwAccount', $this->orig['objectClass']) && !in_array('phpgwAccount', $this->attributes['objectClass']))) {
+ 			$dn = $this->getAccountContainer()->finalDN;
+ 			$myattributes = array_merge(array('objectClass'), $this->meta['attributes']);
+-			$sr = @ldap_read($_SESSION['ldap']->server(), $dn, 'objectClass=*', $myattributes);
++			$sr = @ldap_read($_SESSION['ldap']->server(), $dn, 'objectClass=*', $myattributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 			if (!$sr) {
+ 				StatusMessage('ERROR', sprintf(_('Was unable to remove attribtues from DN: %s.'), $dn), ldap_error($_SESSION['ldap']->server()));				
+ 				return;
+diff -ur ldap-account-manager-2.9.0/lib/modules.inc ldap-account-manager-2.9.0-limit/lib/modules.inc
+--- ldap-account-manager-2.9.0/lib/modules.inc	2009-11-26 00:07:28.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules.inc	2010-02-14 12:40:50.992721873 +0100
+@@ -1624,7 +1624,7 @@
+ 		$this->module = array();
+ 		$modules = $_SESSION['config']->get_AccountModules($this->type);
+ 		$search = substr($dn, 0, strpos($dn, ','));
+-		$result = @ldap_read($_SESSION['ldap']->server(), escapeDN($dn), escapeDN($search), array(), 0, 0, 0, LDAP_DEREF_NEVER); // TODO use ldap_read()
++		$result = @ldap_read($_SESSION['ldap']->server(), escapeDN($dn), escapeDN($search), array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER); // TODO use ldap_read()
+ 		if (!$result) {
+ 			return array(array("ERROR", _("Unable to load LDAP entry:") . " " . $dn, ldap_error($_SESSION['ldap']->server())));
+ 		}
+diff -ur ldap-account-manager-2.9.0/lib/schema.inc ldap-account-manager-2.9.0-limit/lib/schema.inc
+--- ldap-account-manager-2.9.0/lib/schema.inc	2009-11-21 14:52:32.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/schema.inc	2010-02-14 12:42:12.138972923 +0100
+@@ -1269,7 +1269,7 @@
+ 	if( $debug ) echo "<pre>";
+ 	$ds = $_SESSION['ldap']->server();
+ 
+-	$search = @ldap_read( $ds, $dn, 'objectClass=*', array( 'subschemaSubentry' ) );
++	$search = @ldap_read( $ds, $dn, 'objectClass=*', array( 'subschemaSubentry' ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER );
+ 	if( $debug ) { echo "Search result (ldap_read): "; var_dump( $search ); echo "\n"; }
+ 	if( ! $search ) {
+ 		if( $debug ) echo "_get_schema_dn() returning false. (search val is false)\n";
+@@ -1362,7 +1362,7 @@
+ 	if( $schema_dn ) {
+ 		if( $debug ) { echo "Found the schema DN: "; var_dump( $schema_dn ); echo "\n"; }
+ 		$schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=*)',
+-							array( $schema_to_fetch ), 0, 0, 0, 
++							array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, 
+ 							LDAP_DEREF_ALWAYS );
+ 
+         // Were we not able to fetch the schema from the $schema_dn?
+@@ -1374,7 +1374,7 @@
+ 
+                 // Try again with a different filter (some servers require (objectClass=subschema) like M-Vault)
+                 $schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=subschema)',
+-                        array( $schema_to_fetch ), 0, 0, 0, 
++                        array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, 
+                         LDAP_DEREF_ALWAYS );
+                 $schema_entries = @ldap_get_entries( $ds, $schema_search );
+ 
+@@ -1405,7 +1405,7 @@
+ 		if( $debug ) echo "Attempting with cn=subschema (OpenLDAP)...\n";
+ 		// try with the standard DN
+ 		$schema_search = @ldap_read($ds, 'cn=subschema', '(objectClass=*)',
+-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++				array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ 	}
+ 
+ 	// cn=schema for Novell eDirectory
+@@ -1413,7 +1413,7 @@
+ 		if( $debug ) echo "Attempting with cn=schema (Novell)...\n";
+ 		// try again, with a different schema DN
+ 		$schema_search = @ldap_read($ds, 'cn=schema', '(objectClass=*)',
+-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++				array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ 	}
+ 
+ 	// cn=schema,cn=configuration,dc=example,dc=com for ActiveDirectory
+@@ -1426,7 +1426,7 @@
+ 		if( $debug ) echo "Attempting with cn=schema,cn=configuration,$base_dn (ActiveDirectory)...\n";
+ 		if( $base_dn != null )
+ 			$schema_search = @ldap_read($ds, 'cn=schema,cn=configuration,' . $base_dn, '(objectClass=*)',
+-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++				array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ 	}
+ 
+ 	// cn=Schema,ou=Admin,dc=example,dc=com for SiteServer
+@@ -1439,7 +1439,7 @@
+ 		if( $debug ) echo "Attempting with cn=Schema,ou=Admin,$base_dn (ActiveDirectory)...\n";
+ 		if( $base_dn != null )
+ 			$schema_search = @ldap_read($ds, 'cn=Schema,ou=Admin,' . $base_dn, '(objectClass=*)',
+-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++				array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ 	}
+ 
+ 	// Attempt to pull schema from Root DSE with scope "base"
+@@ -1448,7 +1448,7 @@
+ 		if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"base\"...\n";
+ 		if( $base_dn != null )
+ 			$schema_search = @ldap_read($ds, '', '(objectClass=*)',
+-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++				array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+          $schema_entries = @ldap_get_entries( $ds, $schema_search );
+          if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
+             $schema_search = null;
+@@ -1460,7 +1460,7 @@
+ 		if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"one\"...\n";
+ 		if( $base_dn != null )
+ 			$schema_search = @ldap_list($ds, '', '(objectClass=*)',
+-				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++				array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+          $schema_entries = @ldap_get_entries( $ds, $schema_search );
+          if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
+             $schema_search = null;
+diff -ur ldap-account-manager-2.9.0/lib/tree.inc ldap-account-manager-2.9.0-limit/lib/tree.inc
+--- ldap-account-manager-2.9.0/lib/tree.inc	2009-10-27 19:45:22.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/tree.inc	2010-02-14 12:55:50.859972953 +0100
+@@ -115,7 +115,7 @@
+                         $expand_img = "../../graphics/plus.png";
+                         $expand_alt = "+";
+                             $child_count = count( get_container_contents( 
+-                                        $base_dn, 0, 
++                                        $base_dn, $_SESSION['config']->get_sizeLimit(), 
+                                         '(objectClass=*)') );
+                             if( $child_count > $limit )
+                                 $child_count = $limit . '+';
+@@ -225,7 +225,7 @@
+  */
+ function dn_exists( $dn )
+ {
+-	$search_result = @ldap_read( $_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn') );
++	$search_result = @ldap_read( $_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER );
+ 
+ 	if( ! $search_result )
+ 		return false;
+@@ -269,8 +269,11 @@
+  * @param string $filter (optional) An LDAP filter to apply when fetching children, example: "(objectClass=inetOrgPerson)"
+  * @return array An array of DN strings listing the immediate children of the specified entry.
+  */
+-function get_container_contents( $dn, $size_limit=0, $filter='(objectClass=*)' )
++function get_container_contents( $dn, $size_limit, $filter='(objectClass=*)' )
+ {
++	if (!isset($size_limit)) {
++		$size_limit = $_SESSION['config']->get_sizeLimit();
++	}
+ 	$search = @ldap_list( $_SESSION['ldap']->server(), $dn, $filter, array( 'dn' ), 1, $size_limit, 0);
+ 	if( ! $search )
+ 		return array();
+@@ -452,7 +455,7 @@
+  */
+ function get_object_attr( $dn, $attr )
+ {
+-	$search = @ldap_read( $_SESSION['ldap']->server(), $dn, '(objectClass=*)', array( $attr ), 0, 0, 0 );
++	$search = @ldap_read( $_SESSION['ldap']->server(), $dn, '(objectClass=*)', array( $attr ), 0, $_SESSION['config']->get_sizeLimit(), 0 );
+ 
+ 	if( ! $search )
+ 		return false;
+@@ -749,7 +752,7 @@
+ {
+ 
+ 	$conn = $_SESSION['ldap']->server();
+-	$search = @ldap_read( $conn, $dn, '(objectClass=*)', array( ), 0, 0, 0, $deref );
++	$search = @ldap_read( $conn, $dn, '(objectClass=*)', array( ), 0, $_SESSION['config']->get_sizeLimit(), 0, $deref );
+ 
+ 	if( ! $search )
+ 		return false;
+@@ -913,7 +916,7 @@
+ 	$attrs = array( 'creatorsname', 'createtimestamp', 'modifiersname', 
+ 			'structuralObjectClass', 'entryUUID',  'modifytimestamp', 
+ 			'subschemaSubentry', 'hasSubordinates', '+' );
+-	$search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, 0, 0, $deref );
++	$search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, $deref );
+ 	if( ! $search )
+ 		return false;
+ 	$entry = ldap_first_entry( $conn, $search );
+@@ -1152,7 +1155,7 @@
+ 	$jpeg_temp_dir = $_SESSION['lampath'] . 'tmp';
+ 
+ 	$conn = $_SESSION['ldap']->server();
+-	$search_result = ldap_read( $conn, $dn, 'objectClass=*', array( $attr_name ) );
++	$search_result = ldap_read( $conn, $dn, 'objectClass=*', array( $attr_name ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER );
+ 	$entry = ldap_first_entry( $conn, $search_result );
+ 
+ 	echo "<table $table_html_attrs><td><center>\n\n";
+@@ -1253,16 +1256,17 @@
+ function pla_ldap_search( $filter, $base_dn=null, $attrs=array(), $scope='sub', $sort_results=true, $deref=LDAP_DEREF_ALWAYS )
+ {
+ 	$ds = $_SESSION['ldap']->server();
++	$slimit = $_SESSION['config']->get_sizeLimit();
+ 	switch( $scope ) {
+ 		case 'base':
+-			$search = @ldap_read( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref );
++			$search = @ldap_read( $ds, $base_dn, $filter, $attrs, 0, $slimit, 0, $deref );
+ 			break;
+ 		case 'one':
+-			$search = @ldap_list( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref );
++			$search = @ldap_list( $ds, $base_dn, $filter, $attrs, 0, $slimit, 0, $deref );
+ 			break;
+ 		case 'sub':
+ 		default:
+-			$search = @ldap_search( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref );
++			$search = @ldap_search( $ds, $base_dn, $filter, $attrs, 0, $slimit, 0, $deref );
+ 			break;
+ 	}
+ 
+diff -ur ldap-account-manager-2.9.0/lib/types/dhcp.inc ldap-account-manager-2.9.0-limit/lib/types/dhcp.inc
+--- ldap-account-manager-2.9.0/lib/types/dhcp.inc	2009-10-28 17:36:24.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/types/dhcp.inc	2010-02-14 12:45:57.006972105 +0100
+@@ -140,7 +140,7 @@
+         	$ldap = $_SESSION['ldap'];
+         	$suffix = $_SESSION['config']->get_Suffix('dhcp');
+         	
+-        	$sr = @ldap_search($ldap->server(),"cn=".$entry['cn'][0].",".$suffix,"objectClass=dhcpHost", array(), 0, 0, 0, LDAP_DEREF_NEVER);
++        	$sr = @ldap_search($ldap->server(),"cn=".$entry['cn'][0].",".$suffix,"objectClass=dhcpHost", array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+         	if ($sr) {
+ 	        	$get = ldap_get_entries($ldap->server(),$sr);
+ 	        	
+diff -ur ldap-account-manager-2.9.0/lib/types/group.inc ldap-account-manager-2.9.0-limit/lib/types/group.inc
+--- ldap-account-manager-2.9.0/lib/types/group.inc	2009-11-24 16:28:08.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/types/group.inc	2010-02-14 12:46:03.783721717 +0100
+@@ -242,7 +242,7 @@
+ 		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, 0, 0, 0, LDAP_DEREF_NEVER);
++			$sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($module_suffix), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 			if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
+ 				StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See the manual for instructions to solve this problem."));
+ 				$this->refresh_primary = true;
+diff -ur ldap-account-manager-2.9.0/lib/types/user.inc ldap-account-manager-2.9.0-limit/lib/types/user.inc
+--- ldap-account-manager-2.9.0/lib/types/user.inc	2009-10-28 17:36:24.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/types/user.inc	2010-02-14 12:46:17.906721870 +0100
+@@ -167,7 +167,7 @@
+ 		$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, 0, 0, 0, LDAP_DEREF_NEVER);
++		$sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($grp_suffix), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 		if ($sr) {
+ 			$info = @ldap_get_entries($_SESSION["ldap"]->server(), $sr);
+ 			unset($info['count']); // delete count entry
+@@ -200,7 +200,7 @@
+ 		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), 0, 0, 0, LDAP_DEREF_NEVER);
++				$result = @ldap_search($_SESSION['ldap']->server(), escapeDN($entry['dn']), $attribute . "=*", array($attribute), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 				if ($result) {
+ 					$tempEntry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
+ 					if ($tempEntry) {
+diff -ur ldap-account-manager-2.9.0/templates/config/confmain.php ldap-account-manager-2.9.0-limit/templates/config/confmain.php
+--- ldap-account-manager-2.9.0/templates/config/confmain.php	2010-02-14 12:59:38.543718828 +0100
++++ ldap-account-manager-2.9.0-limit/templates/config/confmain.php	2010-02-14 12:25:51.312720326 +0100
+@@ -276,6 +276,18 @@
+ if ($conf->get_cacheTimeout() != 15) echo("<option>15</option>\n");
+ echo ("</select></td>\n");
+ $tabindex++;
++
++// new line
++echo ("<tr><td colspan=3>&nbsp;</td></tr>");
++
++// tree suffix
++echo ("<tr><td align=\"right\"><b>".
++	_("Search size limit") . ": </b></td>".
++	"<td><input tabindex=\"$tabindex\" size=10 type=\"text\" name=\"sizelimit\" value=\"" . $conf->get_sizeLimit('tree') . "\"></td>\n");
++echo "<td>";
++printHelpLink(getHelp('', '213'), '213');
++echo "</td></tr>\n";
++$tabindex++;
+ echo "<td>";
+ printHelpLink(getHelp('', '214'), '214');
+ echo "</td></tr>\n";
+@@ -535,6 +547,9 @@
+ 	if (!$conf->set_cacheTimeout($_POST['cachetimeout'])) {
+ 		$errors[] = array("ERROR", _("Cache timeout is invalid!"));
+ 	}
++	if (!$conf->set_sizeLimit($_POST['sizelimit'])) {
++		$errors[] = array("ERROR", _("Size limit is invalid!"));
++	}
+ 	if (isLAMProVersion()) {
+ 		$conf->setAccessLevel($_POST['accessLevel']);
+ 	}
+diff -ur ldap-account-manager-2.9.0/templates/delete.php ldap-account-manager-2.9.0-limit/templates/delete.php
+--- ldap-account-manager-2.9.0/templates/delete.php	2009-10-28 17:35:41.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/delete.php	2010-02-14 12:46:53.971969845 +0100
+@@ -254,7 +254,7 @@
+ */
+ function getChildCount($dn) {
+ 	$return = 0;
+-	$sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), 'objectClass=*', array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++	$sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), 'objectClass=*', array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 	if ($sr) {
+ 		$entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ 		$return = $entries['count'] - 1;
+@@ -270,7 +270,7 @@
+ */
+ function deleteDN($dn) {
+ 	$errors = array();
+-	$sr = @ldap_list($_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn'), 0);
++	$sr = @ldap_list($_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 	if ($sr) {
+ 		$entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ 		for ($i = 0; $i < $entries['count']; $i++) {
+diff -ur ldap-account-manager-2.9.0/templates/initsuff.php ldap-account-manager-2.9.0-limit/templates/initsuff.php
+--- ldap-account-manager-2.9.0/templates/initsuff.php	2009-11-24 16:19:38.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/initsuff.php	2010-02-14 12:47:25.048972037 +0100
+@@ -58,7 +58,7 @@
+ 		// add entries
+ 		for ($i = 0; $i < sizeof($new_suff); $i++) {
+ 			// check if entry is already present
+-			$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($new_suff[$i]), "objectclass=*", array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++			$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($new_suff[$i]), "objectclass=*", array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 			$res = @ldap_get_entries($_SESSION['ldap']->server(), $info);
+ 			if ($res) continue;
+ 			$suff = $new_suff[$i];
+@@ -100,7 +100,7 @@
+ 						// create missing entries
+ 						for ($k = sizeof($subsuffs) - 1; $k >= 0; $k--) {
+ 							// check if subsuffix is present
+-							$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($subsuffs[$k]), "objectclass=*", array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++							$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($subsuffs[$k]), "objectclass=*", array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 							$res = @ldap_get_entries($_SESSION['ldap']->server(), $info);
+ 							if (!$res) {
+ 								$suffarray = explode(",", $subsuffs[$k]);
+diff -ur ldap-account-manager-2.9.0/templates/lists/userlink.php ldap-account-manager-2.9.0-limit/templates/lists/userlink.php
+--- ldap-account-manager-2.9.0/templates/lists/userlink.php	2009-10-28 17:36:08.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/lists/userlink.php	2010-02-14 12:47:36.448722065 +0100
+@@ -77,7 +77,7 @@
+ function search_username($name) {
+ 	$filter = "(uid=$name)";
+ 	$attrs = array();
+-	$sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($_SESSION['config']->get_Suffix('user')), $filter, $attrs, 0, 0, 0, LDAP_DEREF_NEVER);
++	$sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($_SESSION['config']->get_Suffix('user')), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 	if ($sr) {
+ 		$info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ 		// return only first DN entry
+diff -ur ldap-account-manager-2.9.0/templates/login.php ldap-account-manager-2.9.0-limit/templates/login.php
+--- ldap-account-manager-2.9.0/templates/login.php	2010-02-14 12:59:38.537718583 +0100
++++ ldap-account-manager-2.9.0-limit/templates/login.php	2010-02-14 12:47:52.654722303 +0100
+@@ -442,7 +442,7 @@
+ 				$searchError = _('Cannot connect to specified LDAP server. Please try again.') . ' ' . @ldap_error($searchLDAP->server());
+ 			}
+ 			else {
+-				$searchResult = @ldap_search($searchLDAP->server(), $_SESSION['config']->getLoginSearchSuffix(), $searchFilter, array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++				$searchResult = @ldap_search($searchLDAP->server(), $_SESSION['config']->getLoginSearchSuffix(), $searchFilter, array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 				if ($searchResult) {
+ 					$searchInfo = @ldap_get_entries($searchLDAP->server(), $searchResult);
+ 					if ($searchInfo) {
+diff -ur ldap-account-manager-2.9.0/templates/main.php ldap-account-manager-2.9.0-limit/templates/main.php
+--- ldap-account-manager-2.9.0/templates/main.php	2009-11-24 16:12:41.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/main.php	2010-02-14 12:48:03.851722995 +0100
+@@ -49,7 +49,7 @@
+ // get list of active types
+ $types = $_SESSION['config']->get_ActiveTypes();
+ for ($i = 0; $i < sizeof($types); $i++) {
+-	$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($conf->get_Suffix($types[$i])), "(objectClass=*)", array('objectClass'), 0, 0, 0, LDAP_DEREF_NEVER);
++	$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($conf->get_Suffix($types[$i])), "(objectClass=*)", array('objectClass'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ 	$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]);
+ }
+diff -ur ldap-account-manager-2.9.0/templates/ou_edit.php ldap-account-manager-2.9.0-limit/templates/ou_edit.php
+--- ldap-account-manager-2.9.0/templates/ou_edit.php	2009-10-27 19:46:33.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/ou_edit.php	2010-02-14 12:48:26.214972014 +0100
+@@ -94,7 +94,7 @@
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list