https://bugs.openldap.org/show_bug.cgi?id=10030
Issue ID: 10030
Summary: Add support for OpenSSL 3.0 to 2.5 stable release
Product: OpenLDAP
Version: 2.5.14
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: libraries
Assignee: bugs(a)openldap.org
Reporter: quanah(a)openldap.org
Target Milestone: ---
As OpenSSL 1.1.1 is being sunset September 2023 we will need to add OpenSSL 3.0
support to the 2.5 series.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10041
Issue ID: 10041
Summary: unnecessary dynlist evaluation
Product: OpenLDAP
Version: 2.5.14
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: overlays
Assignee: bugs(a)openldap.org
Reporter: david.coutadeur(a)gmail.com
Target Milestone: ---
Created attachment 963
--> https://bugs.openldap.org/attachment.cgi?id=963&action=edit
openldap config + data for showing the dynlist usecase
Evaluation of member of dynamic groups by dynlist can be slow.
However, in some context, the evaluation is not necessary, especially when
searching object that are not dynamic groups.
You can find attached a configuration and data file showing the use case:
- 10000 users
- 100 static groups
- 5000 dynamic groups, with a filter (&(uid=user*)(objectClass=person),
grabbing all users
Example of "normal" slow search ~ 115s:
ldapsearch -x -H 'ldap://localhost:389/' -D
'uid=admin,ou=people,dc=my-organization,dc=com' -w 'secret' -b
'ou=groups,dc=my-organization,dc=com'
'(member=uid=user1,ou=people,dc=my-organization,dc=com)'
Example of abnormal slow search ~ 115s:
ldapsearch -x -H 'ldap://localhost:389/' -D
'uid=admin,ou=people,dc=my-organization,dc=com' -w 'secret' -b
'ou=groups,dc=my-organization,dc=com'
'(&(objectClass=groupOfNames)(member=uid=user1,ou=people,dc=my-organization,dc=com))'
Here, the filter about the objectClass could be evaluated first to avoid
unnecessary search in dynamic groups.
Example of rapid search with DSA IT ~ 1ms:
ldapsearch -x -H 'ldap://localhost:389/' -D
'uid=admin,ou=people,dc=my-organization,dc=com' -w 'secret' -b
'ou=groups,dc=my-organization,dc=com'
'(&(objectClass=groupOfNames)(member=uid=user1,ou=people,dc=my-organization,dc=com))'
-M
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10000
Issue ID: 10000
Summary: Potential memory leak in tests/progs/slapd-watcher.c
Product: OpenLDAP
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: test suite
Assignee: bugs(a)openldap.org
Reporter: 1061499390(a)qq.com
Target Milestone: ---
Version: Github:master
Potential memory leak in slapd-watcher.c line 517.Calling ldap_search_ext_s()
without calling ldap_msgfree() to free the memory will cause a memory leak.
Doc says "Note that res parameter of ldap_search_ext_s() and
ldap_search_s() should be freed with ldap_msgfree() regardless of return value
of these functions." in
https://www.openldap.org/software/man.cgi?query=ldap_search_ext_s&apropos=0…
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10023
Issue ID: 10023
Summary: Asynchronous connects are broken
Product: OpenLDAP
Version: 2.5.14
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: libraries
Assignee: bugs(a)openldap.org
Reporter: ipuleston(a)sonicwall.com
Target Milestone: ---
We have a port of OpenLDAP client running in an embedded system, which is using
asynchronous connects to the LDAP server. We have been using OpenLDAP 2.4.40
for a long time, and I just upgraded it to use 2.5.14 (as the current LTS
release). After doing this, async connects to the LDAP server no longer work.
You can see this in the following debug output:
A successful async connect with 2.4.40:
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP Ian-DC1.sd80.com:389
ldap_pvt_gethostbyname_a: host=Ian-DC1.sd80.com, r=0
ldap_new_socket: 251
ldap_prepare_socket: 251
ldap_connect_to_host: Trying 192.168.168.3:389
ldap_pvt_connect: fd: 251 tm: 10 async: -1
ldap_ndelay_on: 251
attempting to connect:
connect errno: 115
ldap_int_poll: fd: -1 tm: 0
A failed async connect with 2.5.14:
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP Ian-DC1.sd80.com:389
ldap_pvt_gethostbyname_a: host=Ian-DC1.sd80.com, r=0
ldap_new_socket: 247
ldap_prepare_socket: 247
ldap_connect_to_host: Trying 10.21.61.3:389
ldap_pvt_connect: fd: 247 tm: 10 async: -1
ldap_ndelay_on: 247
attempting to connect:
connect errno: 115
ldap_open_defconn: successful
ldap_send_server_request
Sending Bind Request, len=0x6ca10c1f
ldap_write: want=63 error=Resource temporarily unavailable
Note that in both cases the connect attempt returns errno 115, EINPROGRESS,
meaning that it has not completed. But after that:
● 2.4.40 calls ldap_int_poll (via ldap_send_initial_request ->
ldap_int_check_async_open) to begin the wait for async completion.
● 2.5.14 instead reports a successful connect, and tries to send the bind which
fails since thre socket is not yet connected.
I tracked the problem down to a change made for ITS #8022 "an async connect may
still succeed immediately" in this commit:
https://git.openldap.org/openldap/openldap/-/commit/ae6347bac12bbf843678a83…
That change in ldap_new_connection makes it set lconn_status for an async
connect to LDAP_CONNST_CONNECTED rather than LDAP_CONNST_CONNECTING if
ldap_int_open_connection returns 0. The problem is that
ldap_int_open_connection returns 0 after getting the EINPROGRESS.
ldap_connect_to_host returns -2 for the latter, but ldap_int_open_connection
doesn't check for that, returning 0 for any return code other than -1.
I think that the bug is actually in ldap_int_open_connection rather than in the
above commit. It should probably return -2 when ldap_connect_to_host returns
that.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10011
Issue ID: 10011
Summary: Incompatibilities with stricter C99 compilers
Product: OpenLDAP
Version: 2.6.4
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: build
Assignee: bugs(a)openldap.org
Reporter: sam(a)gentoo.org
Target Milestone: ---
Newer C compilers (>= Clang 16 and likely >= GCC 14) reject some constructs
removed in C99 like implicit function declarations and implicit ints. Some
compilers are also starting to reject obsolete K&R prototypes which were
removed in C23.
I've filed an MR at
https://git.openldap.org/openldap/openldap/-/merge_requests/605 to address the
issues in configure as well as a small number of issues in the codebase itself.
For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki
[2],
or the (new) c-std-porting mailing list [3].
[0] https://lwn.net/Articles/913505/
[1]
https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-…
[2] https://wiki.gentoo.org/wiki/Modern_C_porting
[3] hosted at lists.linux.dev.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10054
Issue ID: 10054
Summary: Value size limited to 2,147,479,552 bytes
Product: LMDB
Version: unspecified
Hardware: x86_64
OS: Linux
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: liblmdb
Assignee: bugs(a)openldap.org
Reporter: louis(a)meilisearch.com
Target Milestone: ---
Hello,
According to the documentation[0], a database that is not using `MDB_DUPSORT`
can store values up to `0xffffffff` bytes (around 4GB).
In practice, under Linux, the actual limit is `0x7ffff000` though (2^31 - 4096,
so around 2GB).
This is due to the write loop in `mdb_page_flush`. The `wsize` value
determining how many bytes will be written can be as big as
`4096*dp->mp_pages`[1], and the number of overflow pages grows with the size of
the value put inside the DB.
The `wsize` is not split in smaller chunks in the case where there are many
overflow pages to write, and as a result the call to `pwrite`[2] does not
perform a full write, but only a "short" write of 2147479552 bytes (the maximum
allowed on a call to `pwrite` on Linux[3]).
This would be OK if the short write condition was handled by looping and
performing another `pwrite` with the rest of the data, but instead `EIO` is
returned[4].
There seems to be a related, but different issue on macOS when trying to
`pwrite` more the 2^31 bytes, that was already reported[5].
This issue was reported to me by a Meilisearch user because it causes their
database indexing to fail[6]. I had to investigate a bit because their setup
was peculiar (high number of documents in their database) and the `EIO` error
code is not very descriptive of the underlying issue.
I join a C reproducer of the issue that attempts to add a 2147479553 bytes
value to the DB and fails with `EIO` (decreasing `nb_items` to a smaller value
such as `2107479552` does succeed)[7].
Thank you for making LMDB!
Louis Dureuil.
[0]:
https://github.com/LMDB/lmdb/blob/mdb.master/libraries/liblmdb/lmdb.h#LL284…
[1]:
https://github.com/LMDB/lmdb/blob/mdb.master/libraries/liblmdb/mdb.c#LL3770…
[2]: https://github.com/LMDB/lmdb/blob/mdb.master/libraries/liblmdb/mdb.c#L3820
[3]:
https://stackoverflow.com/questions/70368651/why-cant-linux-write-more-than…
[4]: https://github.com/LMDB/lmdb/blob/mdb.master/libraries/liblmdb/mdb.c#L3840
[5]: https://bugs.openldap.org/show_bug.cgi?id=9736
[6]: https://github.com/meilisearch/meilisearch/issues/3654
[7]: https://github.com/dureuill/lmdb_3654/tree/main
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10062
Issue ID: 10062
Summary: How to store a data item of length greater than 511 in
a dupsort db
Product: LMDB
Version: 0.9.30
Hardware: x86_64
OS: Linux
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: liblmdb
Assignee: bugs(a)openldap.org
Reporter: mega.alpha100(a)gmail.com
Target Milestone: ---
Is there a workaround to storing a data item with a length greater than the
value of `fn mdb_env_get_maxkeysize()` or 511 in a dupsort db?
Also, I tried to change the value of the `MDB_MAXKEYSIZE` macro but that led to
an illegal instruction
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10056
Issue ID: 10056
Summary: test069-delta-multiprovider-starttls failures on
static builds
Product: OpenLDAP
Version: 2.6.4
Hardware: x86_64
OS: Linux
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: build
Assignee: bugs(a)openldap.org
Reporter: kaction(a)disroot.org
Target Milestone: ---
Hello.
I am getting following test error when trying to build `openldap` statically:
```
[nix-shell:/tmp/openldap-static/openldap-2.6.4/tests]$ ./run
test069-delta-multiprovider-starttls
Cleaning up test run directory leftover from previous run.
Running ./scripts/test069-delta-multiprovider-starttls for mdb...
running defines.sh
Initializing server configurations...
Starting server 1 on TCP/IP port 9011...
Using ldapsearch to check that server 1 is running...
Waiting 5 seconds for slapd to start...
Using ldapadd for context on server 1...
Starting server 2 on TCP/IP port 9012...
Using ldapsearch to check that server 2 is running...
Waiting 5 seconds for slapd to start...
Using ldapadd to populate server 1...
Waiting 7 seconds for syncrepl to receive changes...
Using ldapsearch to read all the entries from server 1...
Using ldapsearch to read all the entries from server 2...
Comparing retrieved entries from server 1 and server 2...
Using ldapadd to populate server 2...
Using ldapsearch to read all the entries from server 1...
Using ldapsearch to read all the entries from server 2...
Comparing retrieved entries from server 1 and server 2...
Breaking replication between server 1 and 2...
Using ldapmodify to force conflicts between server 1 and 2...
Restoring replication between server 1 and 2...
Waiting 7 seconds for syncrepl to receive changes...
Using ldapsearch to read all the entries from server 1...
Using ldapsearch to read all the entries from server 2...
Comparing retrieved entries from server 1 and server 2...
test failed - server 1 and server 2 databases differ (561)
```
I added line number (561) into error message to pinpoint it more precisely.
And here is difference between databases:
```
--- /tmp/openldap-static/openldap-2.6.4/tests/testrun/server1.flt
2023-05-23 22:53:51.000965129 -0400
+++ /tmp/openldap-static/openldap-2.6.4/tests/testrun/server2.flt
2023-05-23 22:53:51.005965136 -0400
@@ -289,13 +289,10 @@
userPassword:: amFq
dn: cn=James A Jones 2,ou=Alumni Association,ou=People,dc=example,dc=com
-carLicense: 123-XYZ
cn: James A Jones 2
cn: James Jones
cn: Jim Jones
-description: Amazing
description: Bizarre
-description: Mindboggling
description: Stupendous
employeeNumber: 64
employeeType: deadwood
@@ -307,7 +304,7 @@
pager: +1 313 555 3923
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
-sn: Surname
+sn: Jones
telephoneNumber: +1 313 555 0895
title: Mad Cow Researcher, UM Alumni Association
uid: jaj
```
Suggestions on what more information I can provide are welcome. You can also
try to build `pkgsStatic.openldap` in this nixpkgs
[commit](f9e32f61282275eb5fa9064e08bbd0a92d1187de)
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10061
Issue ID: 10061
Summary: Query on setting TLSVerifyClient option set to demand
Product: OpenLDAP
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: slapd
Assignee: bugs(a)openldap.org
Reporter: ramajay52(a)gmail.com
Target Milestone: ---
Dear Experts,
In my case, I had set TLSVerifyClient to demand.
I couldn't be able to establish a connection While providing
TLSCACertificateFile alone.
While setting the TLSVerifyClient option demand is it mandatory to provide the
following option?
1. TLSCACertificateFile
2. TLSCertificateKeyFile
3. TLSCertificateFile
Regards,
Ram
--
You are receiving this mail because:
You are on the CC list for the issue.