https://bugs.openldap.org/show_bug.cgi?id=10262
Issue ID: 10262
Summary: Feature request: configurable memory alignment of LMDB
keys and values
Product: LMDB
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: liblmdb
Assignee: bugs(a)openldap.org
Reporter: sascha(a)brawer.ch
Target Milestone: ---
When creating an LMDB table, it would be nice if an application could request
how its keys and values will be aligned in memory.
Currently, LMDB seems to gives 2-byte alignment; see LMDB issue 10260. On most
non-Intel CPUs, unaligned reads will cause SIGBUS errors, so any data with
32-bit or 64-bit values has to be accessed in multiple 16-bit chunks (which is
inefficient), or copied out of LMDB-mapped memory into a custom, properly
aligned buffer (which is inefficient, too). To prevent such performance
degradation, it would be nice if applications could request alignment of keys
and/or values to 8-byte boundaries. Then, LMDB data would have the same
alignment guarantees as malloc().
The Linux kernel has a nice description of alignment:
https://www.kernel.org/doc/html/latest/core-api/unaligned-memory-access.html
Even on Intel CPUs, being able to specify alignment would be useful. For
example, AVX-512 benefits from data being aligned to 64-byte boundaries. If an
application could request 64-byte alignment for a given table, its values could
be loaded direclty into AVX-512 registers. This would be useful for
applications whose tables contain bitvectors or other data suitable for SIMD
proceesing.
https://www.intel.com/content/www/us/en/developer/articles/technical/data-a…
Of course, padding comes at a cost. It increases storage space and reduces
cache effectiveness. It would be wasteful to align each key and value in every
table to some boundary. Hence the suggestion to make this configurable per
table, perhaps with additional flags for mdb_dbi_open().
One could argue that memory alignment is out of scope for LMDB, leaving it up
to applications to deal with misalignments. However, because of the cost of
workarounds, it would make LMDB (significantly) less efficient than it could
be, even on Intel CPUs. Thus, many thanks for considering this feature request.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10260
Issue ID: 10260
Summary: Document alignment of MDB_val.mv_data
Product: LMDB
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: liblmdb
Assignee: bugs(a)openldap.org
Reporter: sascha(a)brawer.ch
Target Milestone: ---
In lmdb.h, could the documentation for MDB_val talk about alignment of mv_data?
For example, is the key guaranteed to be aligned to an 8-byte boundary if a
table got created with MDB_INTEGERKEY? What about values in MDB_INTEGERDUP
tables? Can database values be directly loaded into SIMD registers (of what
width?) without first copying the data to an aligned location?
On some processor architectures, unaliged reads lead to bus errors; therefore,
it would help programmers to know whether LMDB makes any alignment guarantees.
Even if clients cannot assume anything, it would be good if LMDB’s public API
documentation could state so.
Many thanks for documenting this! Just adding 1 or 2 sentences to the MDB_val
section in lmdb.h would be enough.
— Sascha Brawer, sascha(a)brawer.ch
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9002
--- Comment #4 from Howard Chu <hyc(a)openldap.org> ---
It's a tradeoff. If you can't accomodate the potential DB size increase, you
must stop slapd. If you can't tolerate stopping slapd, you have to provide
enough disk space.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9022
--- Comment #2 from Quanah Gibson-Mount <quanah(a)openldap.org> ---
Add it as a new option under -o flag
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9002
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|slapd |documentation
--- Comment #3 from Quanah Gibson-Mount <quanah(a)openldap.org> ---
Document best practices for consistent backups, namely: Stop slapd, slapcat,
start slapd, perhaps a dedicated server for this purpose.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8757
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|2.7.0 |3.0.0
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8673
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|bugs(a)openldap.org |ondra(a)mistotebe.net
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8617
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|bugs(a)openldap.org |hyc(a)openldap.org
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=10261
Issue ID: 10261
Summary: draft-behera-ldap-password-policy - evolution
pwdAccountDisabled
Product: OpenLDAP
Version: unspecified
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: ---
Hello,
For information, I tried to send a mail at:
draft-behera-ldap-password-policy(a)ietf.org first, but I get a: Recipient
address rejected: User unknown
I'd like to propose an evolution for the current version of
draft-behera-ldap-password-policy.
Indeed, in the specification, there is the notion of locked or blocked account,
with the presence of pwdAccountLockedTime, preventing users from
authenticating.
However:
* any account with sufficient privileges can modify the userPassword
* when he does so, the pwdAccountLockedTime is removed
This behaviour is advisable most of the time. But sometimes we need a more
restrictive policy.
The goal of this evolution is to propose an alternate behaviour where the
"disabling attribute" is never removed unless asked explicitely, and where
userPassword cannot be modified until the "disabling attribute" is present.
This attribute could be named pwdAccountDisabled.
Here is the proposed evolution:
4.1.1. Password Validity Policy
...
A password cannot be used to authenticate while the corresponding account has
been disabled.
4.2.8. Disabled account
A password cannot be changed while the password owner has been disabled. While
doing so, the LDAP directory should send a Constraint violation (19) error code
with additional info: Account is disabled.
5.3.12. pwdAccountDisabled
This attribute holds the time that the user's account was disabled. A disabled
account means that the password may no longer be used to authenticate and none
can change the userPassword until it is disabled.
( 1.3.6.1.4.1.42.2.27.8.1.33
NAME 'pwdAccountDisabled'
DESC 'The time an user account was disabled'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE
USAGE directoryOperation )
Thanks in advance for your consideration. Of course, it is opened to
discussion, and maybe can I help a little for the implementation.
Regards,
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8611
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|2.7.0 |---
Summary|Option to block SSL |Option to disable SSL
|renegotation after X |renegotiation entirely
|attempts |
--- Comment #2 from Quanah Gibson-Mount <quanah(a)openldap.org> ---
Likely not needed for OpenLDAP, option would be to disable renegotiation
entirely.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8491
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |VERIFIED
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8491
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Target Milestone|2.7.0 |---
Resolution|--- |FIXED
--- Comment #4 from Quanah Gibson-Mount <quanah(a)openldap.org> ---
already covered by slapmodify test007
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8890
--- Comment #18 from tg(a)debian.org <tg(a)debian.org> ---
On Sat, 21 Sep 2024, tg(a)debian.org wrote:
>AIUI, this should likely be something like:
… make that…
+- keys[0].bv_val = ch_malloc( LDAP_PVT_INTTYPE_CHARS(long) );
++ keys[0].bv_val = ch_malloc( LDAP_PVT_INTTYPE_CHARS(long long) );
+ keys[0].bv_len = snprintf(keys[0].bv_val,
+- LDAP_PVT_INTTYPE_CHARS(long),
++ LDAP_PVT_INTTYPE_CHARS(long long),
+- "%ld", slap_get_time());
++ "%lld", (long long)slap_get_time());
… of course. (It’s 03:04 in the night, and re-reading those
comments from above was not effortless.)
bye,
//mirabilos
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8890
--- Comment #17 from tg(a)debian.org <tg(a)debian.org> ---
On Sat, 21 Sep 2024, openldap-its(a)openldap.org wrote:
>https://bugs.openldap.org/show_bug.cgi?id=8890
>I didn't understand Howard's comment ('the unconditional use of "long long"
[…]
Looking at it *again*, with some years of distance, I *think*
I now see what Howard’s barely comprehensible and rather rude
comments were meant to point out.
I did not see it at that time because ⓐ I was trying, and, as
a nōn-English-native speaker, failing to puzzle out what he was
saying, and ⓑ the OpenLDAP code’s use of abstractions here has
massively reduced its legibility.
+ keys[0].bv_val = ch_malloc( LDAP_PVT_INTTYPE_CHARS(long) );
+ keys[0].bv_len = snprintf(keys[0].bv_val,
+ LDAP_PVT_INTTYPE_CHARS(long),
+- "%ld", slap_get_time());
++ "%lld", (long long)slap_get_time());
I think the first line of that is the point of critique. On
repeat reading, it looks like it tries to figure out how many
bytes are needed to represent a long, then allocates a buffer
sized by this.
As I correctly pointed out, this is a separate issue. However,
Howard rejected both the immediate fix of printing wrong data
RIGHT NOW (and likely truncating that at some point in the future)
and this follow-up bug to address that truncation.
AIUI, this should likely be something like:
+- keys[0].bv_val = ch_malloc( LDAP_PVT_INTTYPE_CHARS(long) );
++ keys[0].bv_val = ch_malloc( LDAP_PVT_INTTYPE_CHARS(long long) );
+ keys[0].bv_len = snprintf(keys[0].bv_val,
+ LDAP_PVT_INTTYPE_CHARS(long),
+- "%ld", slap_get_time());
++ "%lld", (long long)slap_get_time());
Of course, someone who actually knows wth LDAP_PVT_INTTYPE_CHARS
is needs to ensure that it DTRT for an argument of “long long”
first.
bye,
//mirabilos
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8890
--- Comment #16 from Ryan Tandy <ryan(a)openldap.org> ---
Debian and Ubuntu have both switched their remaining 32-bit architectures,
except for i686, to 64-bit time_t. The change is in Ubuntu 24.04 (already
released) and Debian 13/trixie (not yet released).
Steve Langasek committed this distro patch:
https://salsa.debian.org/openldap-team/openldap/-/blob/2a8f9240b9b6fd577d91…
It's mostly the same as what was previously proposed in this ITS (changing %ld
format specifiers to %lld), and unfortunately contains the same smbk5pwd bug
that was already commented on.
I didn't understand Howard's comment ('the unconditional use of "long long"
instead of "long" will break on machines where "long long" is not 64 bits'). My
understanding is C specifies "long long" to be at least 64 bits, and I'm not
aware of any existing systems (yet) where "long long" is 128 bits - is it more
of a futureproofing concern? Casting to long long and formatting with %lld
seems to be the generally accepted solution in the broader community. If that's
not acceptable, maybe scripting configure to generate a PRI_TIME_T format
specifier?
Steve's patch comment mentions an assertion failure in test046-dds on 32-bit
ARM:
servers/slapd/overlays/dds.c:422: dds_op_add: Assertion `bv.bv_len < sizeof(
ttlbuf )' failed.
I have not reproduced it myself (I don't have ARM hardware, and it isn't
happening for me on x86). I note that the assertion ttl <= DDS_RF2589_MAX_TTL
just above did not fail; but that does not rule out corruption of either the
64-bit value (could be negative) or the 32-bit quantity read by snprintf. I
haven't figured out what actually happened here, but it's irritating me.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=7981
Howard Chu <hyc(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |CONFIRMED
--- Comment #4 from Howard Chu <hyc(a)openldap.org> ---
We can't simply add this to the pwdPolicy objectclass since that is a
standardized class. Also the values of crypt schemes are server specific, not
standardized at all.
A solution for us would be to define an OpenLDAP-specific subclass of the
pwdPolicy class, and add whatever we need to in there and use it going forward.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=6938
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |IN_PROGRESS
Assignee|bugs(a)openldap.org |mhardin(a)symas.com
Ever confirmed|0 |1
--- Comment #2 from Quanah Gibson-Mount <quanah(a)openldap.org> ---
Matt to confirm slapd can listen to IPv6 on Windows, and that the ldap client
tools can talk to slapd over IPv6 on windows.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=6765
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|Server-side support of |SASL support of "Verify
|"Verify Credentials" extop |Credentials" extop
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=6942
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|bugs(a)openldap.org |ondra(a)mistotebe.net
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=6531
Quanah Gibson-Mount <quanah(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|bugs(a)openldap.org |ondra(a)mistotebe.net
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=9813
Issue ID: 9813
Summary: Incompatibility between remoteauth and ppolicy
overlays
Product: OpenLDAP
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: overlays
Assignee: bugs(a)openldap.org
Reporter: thierry.pubellier(a)paris.fr
Target Milestone: ---
Hi,
We are planning to use OpenLDAP as a proxy for some users in our Active
Directory servers, using remoteauth overlay.
We want this OpenLDAP instance to also implement an account lockout policy,
preventing the lockout on our internal Active Directory servers.
But there seems to be an incompatibility between remoteauth and ppolicy
overlays : remoteauth won't remote authenticate a user if local userPassword
attribute exists, while ppolicy overlay needs this attribute.
Could there be a configuration parameter in ppolicy to allow lockout
checks/modifications (which seemed to be the default behavior of OpenLDAP
before ITS#7089) ?
I can provide a patch if allowed.
Thanks by advance,
Best regards,
Thierry
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8476
--- Comment #2 from Quanah Gibson-Mount <quanah(a)openldap.org> ---
Seems like a good idea. For constraints where no custom message was provided,
we could return the constraint number to provide a pointer to which constraint
was triggered.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=6198
--- Comment #6 from Ondřej Kuzník <ondra(a)mistotebe.net> ---
A few open questions I can't resolve yet:
- Do we rely on OID macros from schema or let slap_control/load_extop2 register
it? The suggestions above tend to prefer OID macros but they have to be defined
in the schema (there's only one) and they're currently case-sensitive
For controls:
- Do we want to be able to use ACLs to turn non-critical controls to ignored?
- Do we want to be able to use ACLs to refuse control combinations?
- Apart from the 'to' clause, do we want it allowed in the 'by' clause as well
(when would it be useful? There's control combinations, anything else?)
I'll start with "no" to all 3 of the above for now.
As for combination with other specifiers (especially for exops), ACL checks are
issued with the operation and an entry right now, they do make sense in that
scope so password modify/DDS refresh should be in the clear. Other extops are
more of a problem:
- whoami: technically there is a DN but it doesn't have to correspond to an
entry
- verify credentials: tricky, since it's processed as a bind
- cancel: abandon can't be restricted, so probably the same
- turn: no idea
- ChainedRequest: even less of one
Probably happy for those to be impossible to restrict in this way, at least for
now.
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=8905
Howard Chu <hyc(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|bugs(a)openldap.org |gnoe(a)symas.com
--
You are receiving this mail because:
You are on the CC list for the issue.
https://bugs.openldap.org/show_bug.cgi?id=7982
Howard Chu <hyc(a)openldap.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|bugs(a)openldap.org |ondra(a)mistotebe.net
--
You are receiving this mail because:
You are on the CC list for the issue.