Fully schema-aware ldb duplicate value enforcement.
This is a continuation of !697 (closed).
These patches address an important defect which has been around since the inception of LDB: the comparison operations on behalf of the attribute syntaxes. For now we had basically always compared LDB values first by the size and if it matched, we did a byte-wise (octet) check with the memcmp()
function.
Clearly this does not work with case-insensitive attributes, like DNS names or here more specifically against the service principal names where we have a valid bug report (https://bugzilla.samba.org/show_bug.cgi?id=8929) which existed for roughly ten years.
Many attempts had been made in the mean-time but all were failing, including an alternative approach two years ago in 2017 (I guess by a colleague of @abartlet).
This time I managed to find and fix the last mistake (a NULL pointer dereference) so that we finally have the patchset which passes the CI tests.