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>>
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to