diff --git a/doc/guide/admin/slapdconf2.sdf b/doc/guide/admin/slapdconf2.sdf index c5c82e1307..764763f4e3 100644 --- a/doc/guide/admin/slapdconf2.sdf +++ b/doc/guide/admin/slapdconf2.sdf @@ -740,7 +740,7 @@ H4: olcBkMdbIdlExp Specify a power of 2 for the maximum size of an index slot. The default is 16, yielding a maximum slot size of 2^16 or 65536. -The specified value must be in the range of 16-31. +The specified value must be in the range of 16-30. This setting helps with the case where certain search filters are slow to return results due to an index slot having collapsed to a diff --git a/doc/guide/admin/slapdconfig.sdf b/doc/guide/admin/slapdconfig.sdf index 2ebc671ad4..3156b521e0 100644 --- a/doc/guide/admin/slapdconfig.sdf +++ b/doc/guide/admin/slapdconfig.sdf @@ -595,7 +595,7 @@ H4: idlexp Specify a power of 2 for the maximum size of an index slot. The default is 16, yielding a maximum slot size of 2^16 or 65536. -The specified value must be in the range of 16-31. +The specified value must be in the range of 16-30. This setting helps with the case where certain search filters are slow to return results due to an index slot having collapsed to a diff --git a/doc/man/man5/slapd-mdb.5 b/doc/man/man5/slapd-mdb.5 index 9e1bb1ab59..75f9335914 100644 --- a/doc/man/man5/slapd-mdb.5 +++ b/doc/man/man5/slapd-mdb.5 @@ -27,7 +27,7 @@ come before any subsequent "backend" or "database" lines. Specify a power of 2 for the maximum size of an index slot. The default is 16, yielding a maximum slot size of 2^16 or 65536. Once set, this option applies to every \fBmdb\fP database instance. -The specified value must be in the range of 16-31. +The specified value must be in the range of 16-30. .LP These diff --git a/servers/slapd/back-mdb/config.c b/servers/slapd/back-mdb/config.c index c0c4b4013c..380e4ff5eb 100644 --- a/servers/slapd/back-mdb/config.c +++ b/servers/slapd/back-mdb/config.c @@ -167,7 +167,8 @@ mdb_bk_cfg( ConfigArgs *c ) mdb_idl_reset(); c->bi->bi_private = 0; } else { - if ( c->value_int >= MDB_IDL_LOGN && c->value_int < sizeof(int) * CHAR_BIT ) { + /* with 32 bit ints, db_size max is 2^30 and um_size max is 2^31 */ + if ( c->value_int >= MDB_IDL_LOGN && ( c->value_int < sizeof(int) * CHAR_BIT - 1 )) { MDB_idl_logn = c->value_int; mdb_idl_reset(); c->bi->bi_private = (void *)8; /* non-NULL to show we're using it */