mirror of
https://git.centos.org/rpms/389-ds-base.git
synced 2025-02-23 16:22:54 +00:00
import 389-ds-base-1.3.11.1-1.el7_9
This commit is contained in:
parent
83ce07ddd8
commit
5b4a29be4f
7 changed files with 7920 additions and 6 deletions
|
@ -1 +1,2 @@
|
|||
5ea563775de60788f87373327d90c09ce37a574b SOURCES/389-ds-base-1.3.10.2.tar.bz2
|
||||
ba6a0490a0a944d3499a7af5dccb4d929869d1c5 SOURCES/389-ds-base-1.3.11.1.tar.bz2
|
||||
da11897b8eb16e7d0c52c9a3aa5db471b1e91d94 SOURCES/vendor-1.3.11.1-1.tar.gz
|
||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
SOURCES/389-ds-base-1.3.10.2.tar.bz2
|
||||
SOURCES/389-ds-base-1.3.11.1.tar.bz2
|
||||
SOURCES/vendor-1.3.11.1-1.tar.gz
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,221 @@
|
|||
From 053fb02f73220be53d1fb93511684a6f7aa3226f Mon Sep 17 00:00:00 2001
|
||||
From: Thierry Bordaz <tbordaz@redhat.com>
|
||||
Date: Thu, 10 Nov 2022 16:54:40 +0100
|
||||
Subject: [PATCH 3/5] Issue 5440 - memberof is slow on update/fixup if there
|
||||
are several 'groupattr' (#5455)
|
||||
|
||||
Bug description:
|
||||
When there are several groupattr (attr_1, attr_2,..) in memberof config
|
||||
To fixup entry 'e1', memberof does an internal search
|
||||
"(|(attr_1=e1)(attr_2=e1)...(attr_n=e1))"
|
||||
This is not valid regarding membership relation and in
|
||||
addition it prevents the server to bypass the filter evaluation.
|
||||
|
||||
Fix description:
|
||||
To fixup an entry iterate several internal searches
|
||||
"(attr_1=e1)" , then "(attr_2=e1)", then "(attr_n=e1)"
|
||||
|
||||
relates: #5440
|
||||
|
||||
Reviewed by: Pierre Rogier, Mark Reynolds, Simon Pichugin (Thanks)
|
||||
---
|
||||
ldap/servers/plugins/memberof/memberof.c | 155 +++++++++++------------
|
||||
1 file changed, 73 insertions(+), 82 deletions(-)
|
||||
|
||||
diff --git a/ldap/servers/plugins/memberof/memberof.c b/ldap/servers/plugins/memberof/memberof.c
|
||||
index b54eb3977..541b27250 100644
|
||||
--- a/ldap/servers/plugins/memberof/memberof.c
|
||||
+++ b/ldap/servers/plugins/memberof/memberof.c
|
||||
@@ -704,8 +704,6 @@ memberof_call_foreach_dn(Slapi_PBlock *pb __attribute__((unused)), Slapi_DN *sdn
|
||||
char *filter_str = NULL;
|
||||
char *cookie = NULL;
|
||||
int all_backends = config->allBackends;
|
||||
- int types_name_len = 0;
|
||||
- int num_types = 0;
|
||||
int dn_len = slapi_sdn_get_ndn_len(sdn);
|
||||
int free_it = 0;
|
||||
int rc = 0;
|
||||
@@ -744,107 +742,100 @@ memberof_call_foreach_dn(Slapi_PBlock *pb __attribute__((unused)), Slapi_DN *sdn
|
||||
#if MEMBEROF_CACHE_DEBUG
|
||||
slapi_log_err(SLAPI_LOG_PLUGIN, MEMBEROF_PLUGIN_SUBSYSTEM, "memberof_call_foreach_dn: Ancestors of %s not cached\n", ndn);
|
||||
#endif
|
||||
- /* Count the number of types. */
|
||||
- for (num_types = 0; types && types[num_types]; num_types++) {
|
||||
- /* Add up the total length of all attribute names.
|
||||
- * We need to know this for building the filter. */
|
||||
- types_name_len += strlen(types[num_types]);
|
||||
- }
|
||||
|
||||
/* Escape the dn, and build the search filter. */
|
||||
escaped_filter_val = slapi_escape_filter_value((char *)slapi_sdn_get_dn(sdn), dn_len);
|
||||
if (escaped_filter_val) {
|
||||
- dn_len = strlen(escaped_filter_val);
|
||||
free_it = 1;
|
||||
} else {
|
||||
escaped_filter_val = (char *)slapi_sdn_get_dn(sdn);
|
||||
}
|
||||
|
||||
- if (num_types > 1) {
|
||||
- int bytes_out = 0;
|
||||
- int filter_str_len = types_name_len + (num_types * (3 + dn_len)) + 4;
|
||||
-
|
||||
- /* Allocate enough space for the filter */
|
||||
- filter_str = slapi_ch_malloc(filter_str_len);
|
||||
-
|
||||
- /* Add beginning of filter. */
|
||||
- bytes_out = snprintf(filter_str, filter_str_len - bytes_out, "(|");
|
||||
-
|
||||
- /* Add filter section for each type. */
|
||||
- for (i = 0; types[i]; i++) {
|
||||
- bytes_out += snprintf(filter_str + bytes_out, filter_str_len - bytes_out,
|
||||
- "(%s=%s)", types[i], escaped_filter_val);
|
||||
- }
|
||||
-
|
||||
- /* Add end of filter. */
|
||||
- snprintf(filter_str + bytes_out, filter_str_len - bytes_out, ")");
|
||||
- } else if (num_types == 1) {
|
||||
- filter_str = slapi_ch_smprintf("(%s=%s)", types[0], escaped_filter_val);
|
||||
- }
|
||||
-
|
||||
- if (free_it)
|
||||
- slapi_ch_free_string(&escaped_filter_val);
|
||||
+ for (i = 0; types[i]; i++) {
|
||||
+ /* Triggers one internal search per membership attribute.
|
||||
+ * Assuming the attribute is indexed (eq), the search will
|
||||
+ * bypass the evaluation of the filter (nsslapd-search-bypass-filter-test)
|
||||
+ * against the candidates. This is important to bypass the filter
|
||||
+ * because on large valueset (static group) it is very expensive
|
||||
+ */
|
||||
+ filter_str = slapi_ch_smprintf("(%s=%s)", types[i], escaped_filter_val);
|
||||
|
||||
- if (filter_str == NULL) {
|
||||
- return rc;
|
||||
- }
|
||||
+ be = slapi_get_first_backend(&cookie);
|
||||
+ while (be) {
|
||||
+ PRBool do_suffix_search = PR_TRUE;
|
||||
|
||||
- search_pb = slapi_pblock_new();
|
||||
- be = slapi_get_first_backend(&cookie);
|
||||
- while (be) {
|
||||
- Slapi_DN *scope_sdn = NULL;
|
||||
+ if (!all_backends) {
|
||||
+ be = slapi_be_select(sdn);
|
||||
+ if (be == NULL) {
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if ((base_sdn = (Slapi_DN *) slapi_be_getsuffix(be, 0)) == NULL) {
|
||||
+ if (!all_backends) {
|
||||
+ break;
|
||||
+ } else {
|
||||
+ /* its ok, goto the next backend */
|
||||
+ be = slapi_get_next_backend(cookie);
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- if (!all_backends) {
|
||||
- be = slapi_be_select(sdn);
|
||||
- if (be == NULL) {
|
||||
- break;
|
||||
+ search_pb = slapi_pblock_new();
|
||||
+ if (config->entryScopes || config->entryScopeExcludeSubtrees) {
|
||||
+ if (memberof_entry_in_scope(config, base_sdn)) {
|
||||
+ /* do nothing, entry scope is spanning
|
||||
+ * multiple suffixes, start at suffix */
|
||||
+ } else if (config->entryScopes) {
|
||||
+ for (size_t i = 0; config->entryScopes[i]; i++) {
|
||||
+ if (slapi_sdn_issuffix(config->entryScopes[i], base_sdn)) {
|
||||
+ /* Search each include scope */
|
||||
+ slapi_search_internal_set_pb(search_pb, slapi_sdn_get_dn(config->entryScopes[i]),
|
||||
+ LDAP_SCOPE_SUBTREE, filter_str, 0, 0, 0, 0,
|
||||
+ memberof_get_plugin_id(), 0);
|
||||
+ slapi_search_internal_callback_pb(search_pb, callback_data, 0, callback, 0);
|
||||
+ /* We already did the search for this backend, don't
|
||||
+ * do it again when we fall through */
|
||||
+ do_suffix_search = PR_FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+ } else if (!all_backends) {
|
||||
+ slapi_pblock_destroy(search_pb);
|
||||
+ break;
|
||||
+ } else {
|
||||
+ /* its ok, goto the next backend */
|
||||
+ be = slapi_get_next_backend(cookie);
|
||||
+ slapi_pblock_destroy(search_pb);
|
||||
+ continue;
|
||||
+ }
|
||||
}
|
||||
- }
|
||||
- if ((base_sdn = (Slapi_DN *)slapi_be_getsuffix(be, 0)) == NULL) {
|
||||
- if (!all_backends) {
|
||||
- break;
|
||||
- } else {
|
||||
- /* its ok, goto the next backend */
|
||||
- be = slapi_get_next_backend(cookie);
|
||||
- continue;
|
||||
+
|
||||
+ if (do_suffix_search) {
|
||||
+ slapi_search_internal_set_pb(search_pb, slapi_sdn_get_dn(base_sdn),
|
||||
+ LDAP_SCOPE_SUBTREE, filter_str, 0, 0, 0, 0,
|
||||
+ memberof_get_plugin_id(), 0);
|
||||
+ slapi_search_internal_callback_pb(search_pb, callback_data, 0, callback, 0);
|
||||
+ slapi_pblock_get(search_pb, SLAPI_PLUGIN_INTOP_RESULT, &rc);
|
||||
+ if (rc != LDAP_SUCCESS) {
|
||||
+ slapi_pblock_destroy(search_pb);
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
- }
|
||||
|
||||
- if (config->entryScopes || config->entryScopeExcludeSubtrees) {
|
||||
- if (memberof_entry_in_scope(config, base_sdn)) {
|
||||
- /* do nothing, entry scope is spanning
|
||||
- * multiple suffixes, start at suffix */
|
||||
- } else if ((scope_sdn = memberof_scope_is_child_of_dn(config, base_sdn))) {
|
||||
- /* scope is below suffix, set search base */
|
||||
- base_sdn = scope_sdn;
|
||||
- } else if (!all_backends) {
|
||||
+ if (!all_backends) {
|
||||
+ slapi_pblock_destroy(search_pb);
|
||||
break;
|
||||
- } else {
|
||||
- /* its ok, goto the next backend */
|
||||
- be = slapi_get_next_backend(cookie);
|
||||
- continue;
|
||||
}
|
||||
- }
|
||||
-
|
||||
- slapi_search_internal_set_pb(search_pb, slapi_sdn_get_dn(base_sdn),
|
||||
- LDAP_SCOPE_SUBTREE, filter_str, 0, 0, 0, 0, memberof_get_plugin_id(), 0);
|
||||
- slapi_search_internal_callback_pb(search_pb, callback_data, 0, callback, 0);
|
||||
- slapi_pblock_get(search_pb, SLAPI_PLUGIN_INTOP_RESULT, &rc);
|
||||
- if (rc != LDAP_SUCCESS) {
|
||||
- break;
|
||||
- }
|
||||
|
||||
- if (!all_backends) {
|
||||
- break;
|
||||
+ be = slapi_get_next_backend(cookie);
|
||||
+ slapi_pblock_destroy(search_pb);
|
||||
}
|
||||
- slapi_pblock_init(search_pb);
|
||||
- be = slapi_get_next_backend(cookie);
|
||||
+ slapi_ch_free((void **)&cookie);
|
||||
+ slapi_ch_free_string(&filter_str);
|
||||
}
|
||||
|
||||
- slapi_pblock_destroy(search_pb);
|
||||
- slapi_ch_free((void **)&cookie);
|
||||
- slapi_ch_free_string(&filter_str);
|
||||
-
|
||||
+ if (free_it) {
|
||||
+ slapi_ch_free_string(&escaped_filter_val);
|
||||
+ }
|
||||
return rc;
|
||||
}
|
||||
|
||||
--
|
||||
2.39.1
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
From 36660f00bf11f89c632f581d6f82b7383b1aa190 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Reynolds <mreynolds@redhat.com>
|
||||
Date: Thu, 26 Jan 2023 08:16:49 -0500
|
||||
Subject: [PATCH 4/5] Issue 5497 - boolean attributes should be case
|
||||
insensitive
|
||||
|
||||
Description: Boolean values are supposed to be case insensitive, but in our
|
||||
code it is senstiive even though the code is in the "cis" file.
|
||||
|
||||
relates: https://github.com/389ds/389-ds-base/issues/5497
|
||||
|
||||
Reviewed by: spichugi(Thanks!)
|
||||
---
|
||||
.../tests/suites/syntax/acceptance_test.py | 248 ++++++++++++++++++
|
||||
ldap/servers/plugins/syntaxes/cis.c | 4 +-
|
||||
2 files changed, 250 insertions(+), 2 deletions(-)
|
||||
create mode 100644 dirsrvtests/tests/suites/syntax/acceptance_test.py
|
||||
|
||||
diff --git a/dirsrvtests/tests/suites/syntax/acceptance_test.py b/dirsrvtests/tests/suites/syntax/acceptance_test.py
|
||||
new file mode 100644
|
||||
index 000000000..807936892
|
||||
--- /dev/null
|
||||
+++ b/dirsrvtests/tests/suites/syntax/acceptance_test.py
|
||||
@@ -0,0 +1,248 @@
|
||||
+# --- BEGIN COPYRIGHT BLOCK ---
|
||||
+# Copyright (C) 2023 Red Hat, Inc.
|
||||
+# All rights reserved.
|
||||
+#
|
||||
+# License: GPL (version 3 or any later version).
|
||||
+# See LICENSE for details.
|
||||
+# --- END COPYRIGHT BLOCK ---
|
||||
+
|
||||
+import ldap
|
||||
+import pytest
|
||||
+import os
|
||||
+from lib389.schema import Schema
|
||||
+from lib389.config import Config
|
||||
+from lib389.idm.user import UserAccounts
|
||||
+from lib389.idm.group import Group, Groups
|
||||
+from lib389._constants import DEFAULT_SUFFIX
|
||||
+from lib389.topologies import log, topology_st as topo
|
||||
+
|
||||
+pytestmark = pytest.mark.tier0
|
||||
+
|
||||
+log = log.getChild(__name__)
|
||||
+
|
||||
+
|
||||
+@pytest.fixture(scope="function")
|
||||
+def validate_syntax_off(topo, request):
|
||||
+ config = Config(topo.standalone)
|
||||
+ config.replace("nsslapd-syntaxcheck", "off")
|
||||
+
|
||||
+ def fin():
|
||||
+ config.replace("nsslapd-syntaxcheck", "on")
|
||||
+ request.addfinalizer(fin)
|
||||
+
|
||||
+
|
||||
+def test_valid(topo, validate_syntax_off):
|
||||
+ """Test syntax-validate task with valid entries
|
||||
+
|
||||
+ :id: ec402a5b-bfb1-494d-b751-71b0d31a4d83
|
||||
+ :setup: Standalone instance
|
||||
+ :steps:
|
||||
+ 1. Set nsslapd-syntaxcheck to off
|
||||
+ 2. Clean error log
|
||||
+ 3. Run syntax validate task
|
||||
+ 4. Assert that there are no errors in the error log
|
||||
+ 5. Set nsslapd-syntaxcheck to on
|
||||
+ :expectedresults:
|
||||
+ 1. It should succeed
|
||||
+ 2. It should succeed
|
||||
+ 3. It should succeed
|
||||
+ 4. It should succeed
|
||||
+ 5. It should succeed
|
||||
+ """
|
||||
+
|
||||
+ inst = topo.standalone
|
||||
+
|
||||
+ log.info('Clean the error log')
|
||||
+ inst.deleteErrorLogs()
|
||||
+
|
||||
+ schema = Schema(inst)
|
||||
+ log.info('Attempting to add task entry...')
|
||||
+ validate_task = schema.validate_syntax(DEFAULT_SUFFIX)
|
||||
+ validate_task.wait()
|
||||
+ exitcode = validate_task.get_exit_code()
|
||||
+ assert exitcode == 0
|
||||
+ error_lines = inst.ds_error_log.match('.*Found 0 invalid entries.*')
|
||||
+ assert (len(error_lines) == 1)
|
||||
+ log.info('Found 0 invalid entries - Success')
|
||||
+
|
||||
+
|
||||
+def test_invalid_uidnumber(topo, validate_syntax_off):
|
||||
+ """Test syntax-validate task with invalid uidNumber attribute value
|
||||
+
|
||||
+ :id: 30fdcae6-ffa6-4ec4-8da9-6fb138fc1828
|
||||
+ :setup: Standalone instance
|
||||
+ :steps:
|
||||
+ 1. Set nsslapd-syntaxcheck to off
|
||||
+ 2. Clean error log
|
||||
+ 3. Add a user with uidNumber attribute set to an invalid value (string)
|
||||
+ 4. Run syntax validate task
|
||||
+ 5. Assert that there is corresponding error in the error log
|
||||
+ 6. Set nsslapd-syntaxcheck to on
|
||||
+ :expectedresults:
|
||||
+ 1. It should succeed
|
||||
+ 2. It should succeed
|
||||
+ 3. It should succeed
|
||||
+ 4. It should succeed
|
||||
+ 5. It should succeed
|
||||
+ 6. It should succeed
|
||||
+ """
|
||||
+
|
||||
+ inst = topo.standalone
|
||||
+
|
||||
+ log.info('Clean the error log')
|
||||
+ inst.deleteErrorLogs()
|
||||
+
|
||||
+ users = UserAccounts(inst, DEFAULT_SUFFIX)
|
||||
+ users.create_test_user(uid="invalid_value")
|
||||
+
|
||||
+ schema = Schema(inst)
|
||||
+ log.info('Attempting to add task entry...')
|
||||
+ validate_task = schema.validate_syntax(DEFAULT_SUFFIX)
|
||||
+ validate_task.wait()
|
||||
+ exitcode = validate_task.get_exit_code()
|
||||
+ assert exitcode == 0
|
||||
+ error_lines = inst.ds_error_log.match('.*uidNumber: value #0 invalid per syntax.*')
|
||||
+ assert (len(error_lines) == 1)
|
||||
+ log.info('Found an invalid entry with wrong uidNumber - Success')
|
||||
+
|
||||
+
|
||||
+def test_invalid_dn_syntax_crash(topo):
|
||||
+ """Add an entry with an escaped space, restart the server, and try to delete
|
||||
+ it. In this case the DN is not correctly parsed and causes cache revert to
|
||||
+ to dereference a NULL pointer. So the delete can fail as long as the server
|
||||
+ does not crash.
|
||||
+
|
||||
+ :id: 62d87272-dfb8-4627-9ca1-dbe33082caf8
|
||||
+ :setup: Standalone Instance
|
||||
+ :steps:
|
||||
+ 1. Add entry with leading escaped space in the RDN
|
||||
+ 2. Restart the server so the entry is rebuilt from the database
|
||||
+ 3. Delete the entry
|
||||
+ 4. The server should still be running
|
||||
+ :expectedresults:
|
||||
+ 1. Success
|
||||
+ 2. Success
|
||||
+ 3. Success
|
||||
+ 4. Success
|
||||
+ """
|
||||
+
|
||||
+ # Create group
|
||||
+ groups = Groups(topo.standalone, DEFAULT_SUFFIX)
|
||||
+ group = groups.create(properties={'cn': ' test'})
|
||||
+
|
||||
+ # Restart the server
|
||||
+ topo.standalone.restart()
|
||||
+
|
||||
+ # Delete group
|
||||
+ try:
|
||||
+ group.delete()
|
||||
+ except ldap.NO_SUCH_OBJECT:
|
||||
+ # This is okay in this case as we are only concerned about a crash
|
||||
+ pass
|
||||
+
|
||||
+ # Make sure server is still running
|
||||
+ groups.list()
|
||||
+
|
||||
+
|
||||
+@pytest.mark.parametrize("props, rawdn", [
|
||||
+ ({'cn': ' leadingSpace'}, "cn=\\20leadingSpace,ou=Groups,dc=example,dc=com"),
|
||||
+ ({'cn': 'trailingSpace '}, "cn=trailingSpace\\20,ou=Groups,dc=example,dc=com")])
|
||||
+def test_dn_syntax_spaces_delete(topo, props, rawdn):
|
||||
+ """Test that an entry with a space as the first character in the DN can be
|
||||
+ deleted without error. We also want to make sure the indexes are properly
|
||||
+ updated by repeatedly adding and deleting the entry, and that the entry cache
|
||||
+ is properly maintained.
|
||||
+
|
||||
+ :id: b993f37c-c2b0-4312-992c-a9048ff98965
|
||||
+ :customerscenario: True
|
||||
+ :parametrized: yes
|
||||
+ :setup: Standalone Instance
|
||||
+ :steps:
|
||||
+ 1. Create a group with a DN that has a space as the first/last
|
||||
+ character.
|
||||
+ 2. Delete group
|
||||
+ 3. Add group
|
||||
+ 4. Modify group
|
||||
+ 5. Restart server and modify entry
|
||||
+ 6. Delete group
|
||||
+ 7. Add group back
|
||||
+ 8. Delete group using specific DN
|
||||
+ :expectedresults:
|
||||
+ 1. Success
|
||||
+ 2. Success
|
||||
+ 3. Success
|
||||
+ 4. Success
|
||||
+ 5. Success
|
||||
+ 6. Success
|
||||
+ 7. Success
|
||||
+ 8. Success
|
||||
+ """
|
||||
+
|
||||
+ # Create group
|
||||
+ groups = Groups(topo.standalone, DEFAULT_SUFFIX)
|
||||
+ group = groups.create(properties=props.copy())
|
||||
+
|
||||
+ # Delete group (verifies DN/RDN parsing works and cache is correct)
|
||||
+ group.delete()
|
||||
+
|
||||
+ # Add group again (verifies entryrdn index was properly updated)
|
||||
+ groups = Groups(topo.standalone, DEFAULT_SUFFIX)
|
||||
+ group = groups.create(properties=props.copy())
|
||||
+
|
||||
+ # Modify the group (verifies dn/rdn parsing is correct)
|
||||
+ group.replace('description', 'escaped space group')
|
||||
+
|
||||
+ # Restart the server. This will pull the entry from the database and
|
||||
+ # convert it into a cache entry, which is different than how a client
|
||||
+ # first adds an entry and is put into the cache before being written to
|
||||
+ # disk.
|
||||
+ topo.standalone.restart()
|
||||
+
|
||||
+ # Make sure we can modify the entry (verifies cache entry was created
|
||||
+ # correctly)
|
||||
+ group.replace('description', 'escaped space group after restart')
|
||||
+
|
||||
+ # Make sure it can still be deleted (verifies cache again).
|
||||
+ group.delete()
|
||||
+
|
||||
+ # Add it back so we can delete it using a specific DN (sanity test to verify
|
||||
+ # another DN/RDN parsing variation).
|
||||
+ groups = Groups(topo.standalone, DEFAULT_SUFFIX)
|
||||
+ group = groups.create(properties=props.copy())
|
||||
+ group = Group(topo.standalone, dn=rawdn)
|
||||
+ group.delete()
|
||||
+
|
||||
+
|
||||
+def test_boolean_case(topo):
|
||||
+ """Test that we can a boolean value in any case
|
||||
+
|
||||
+ :id: 56777c1d-b058-41e1-abd5-87a6f1512db2
|
||||
+ :customerscenario: True
|
||||
+ :setup: Standalone Instance
|
||||
+ :steps:
|
||||
+ 1. Create test user
|
||||
+ 2. Add boolean attribute value that is lowercase "false"
|
||||
+ :expectedresults:
|
||||
+ 1. Success
|
||||
+ 2. Success
|
||||
+ """
|
||||
+ inst = topo.standalone
|
||||
+ users = UserAccounts(inst, DEFAULT_SUFFIX)
|
||||
+ user = users.create_test_user(uid=1011)
|
||||
+
|
||||
+ user.add('objectclass', 'extensibleObject')
|
||||
+ user.add('pamsecure', 'false')
|
||||
+ user.replace('pamsecure', 'FALSE')
|
||||
+ user.replace('pamsecure', 'true')
|
||||
+ user.replace('pamsecure', 'TRUE')
|
||||
+
|
||||
+ # Test some invalid syntax
|
||||
+ with pytest.raises(ldap.INVALID_SYNTAX):
|
||||
+ user.replace('pamsecure', 'blah')
|
||||
+
|
||||
+
|
||||
+if __name__ == '__main__':
|
||||
+ # Run isolated
|
||||
+ # -s for DEBUG mode
|
||||
+ CURRENT_FILE = os.path.realpath(__file__)
|
||||
+ pytest.main("-s %s" % CURRENT_FILE)
|
||||
diff --git a/ldap/servers/plugins/syntaxes/cis.c b/ldap/servers/plugins/syntaxes/cis.c
|
||||
index e1242e3f4..c9274f37f 100644
|
||||
--- a/ldap/servers/plugins/syntaxes/cis.c
|
||||
+++ b/ldap/servers/plugins/syntaxes/cis.c
|
||||
@@ -853,12 +853,12 @@ boolean_validate(
|
||||
*/
|
||||
if (val != NULL) {
|
||||
if (val->bv_len == 4) {
|
||||
- if (strncmp(val->bv_val, "TRUE", 4) != 0) {
|
||||
+ if (strncasecmp(val->bv_val, "TRUE", 4) != 0) {
|
||||
rc = 1;
|
||||
goto exit;
|
||||
}
|
||||
} else if (val->bv_len == 5) {
|
||||
- if (strncmp(val->bv_val, "FALSE", 5) != 0) {
|
||||
+ if (strncasecmp(val->bv_val, "FALSE", 5) != 0) {
|
||||
rc = 1;
|
||||
goto exit;
|
||||
}
|
||||
--
|
||||
2.39.1
|
||||
|
833
SOURCES/Cargo.lock
generated
Normal file
833
SOURCES/Cargo.lock
generated
Normal file
|
@ -0,0 +1,833 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ansi_term"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atty"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
|
||||
|
||||
[[package]]
|
||||
name = "cbindgen"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9daec6140ab4dcd38c3dd57e580b59a621172a526ac79f1527af760a55afeafd"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"log",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"syn",
|
||||
"tempfile",
|
||||
"toml",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.79"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "2.34.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
||||
dependencies = [
|
||||
"ansi_term",
|
||||
"atty",
|
||||
"bitflags",
|
||||
"strsim",
|
||||
"textwrap",
|
||||
"unicode-width",
|
||||
"vec_map",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "concread"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcc9816f5ac93ebd51c37f7f9a6bf2b40dfcd42978ad2aea5d542016e9244cf6"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"crossbeam",
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-utils",
|
||||
"lru",
|
||||
"parking_lot",
|
||||
"rand",
|
||||
"smallvec",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-channel",
|
||||
"crossbeam-deque",
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-queue",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-channel"
|
||||
version = "0.5.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-deque"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.9.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
"memoffset",
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-queue"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
|
||||
dependencies = [
|
||||
"instant",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fernet"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "93804560e638370a8be6d59ce71ed803e55e230abdbf42598e666b41adda9b1f"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"byteorder",
|
||||
"getrandom",
|
||||
"openssl",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
||||
dependencies = [
|
||||
"foreign-types-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types-shared"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"wasi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "instant"
|
||||
version = "0.1.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
|
||||
|
||||
[[package]]
|
||||
name = "jobserver"
|
||||
version = "0.1.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.139"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
|
||||
|
||||
[[package]]
|
||||
name = "librnsslapd"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"cbindgen",
|
||||
"libc",
|
||||
"slapd",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "librslapd"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"cbindgen",
|
||||
"concread",
|
||||
"libc",
|
||||
"slapd",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lru"
|
||||
version = "0.7.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a"
|
||||
dependencies = [
|
||||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.17.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"cfg-if",
|
||||
"foreign-types",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"openssl-macros",
|
||||
"openssl-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-macros"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.80"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cc",
|
||||
"libc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.11.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
|
||||
dependencies = [
|
||||
"instant",
|
||||
"lock_api",
|
||||
"parking_lot_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"instant",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"smallvec",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "paste"
|
||||
version = "0.1.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
|
||||
dependencies = [
|
||||
"paste-impl",
|
||||
"proc-macro-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "paste-impl"
|
||||
version = "0.1.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
|
||||
dependencies = [
|
||||
"proc-macro-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.26"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-hack"
|
||||
version = "0.5.20+deprecated"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.51"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pwdchan"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"cc",
|
||||
"libc",
|
||||
"openssl",
|
||||
"paste",
|
||||
"slapi_r_plugin",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "remove_dir_all"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.152"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.152"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.93"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slapd"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"fernet",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slapi_r_plugin"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"paste",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.107"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "synstructure"
|
||||
version = "0.12.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"fastrand",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"remove_dir_all",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "textwrap"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
||||
dependencies = [
|
||||
"unicode-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"pin-project-lite",
|
||||
"tokio-macros",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-macros"
|
||||
version = "1.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.5.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-width"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||
|
||||
[[package]]
|
||||
name = "vec_map"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.11.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
"winapi-x86_64-pc-windows-gnu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
|
||||
|
||||
[[package]]
|
||||
name = "zeroize"
|
||||
version = "1.5.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"
|
||||
dependencies = [
|
||||
"zeroize_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zeroize_derive"
|
||||
version = "1.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"synstructure",
|
||||
]
|
|
@ -14,6 +14,7 @@
|
|||
# This is used in certain builds to help us know if it has extra features.
|
||||
%global variant base
|
||||
%global use_asan 0
|
||||
%global use_rust 1
|
||||
|
||||
%if %{use_asan}
|
||||
%global use_tcmalloc 0
|
||||
|
@ -25,6 +26,7 @@
|
|||
%global use_tcmalloc 0
|
||||
%endif
|
||||
%endif
|
||||
%global rust_version 1.62
|
||||
|
||||
# fedora 15 and later uses tmpfiles.d
|
||||
# otherwise, comment this out
|
||||
|
@ -38,8 +40,8 @@
|
|||
|
||||
Summary: 389 Directory Server (%{variant})
|
||||
Name: 389-ds-base
|
||||
Version: 1.3.10.2
|
||||
Release: %{?relprefix}17%{?prerel}%{?dist}
|
||||
Version: 1.3.11.1
|
||||
Release: %{?relprefix}1%{?prerel}%{?dist}
|
||||
License: GPLv3+
|
||||
URL: https://www.port389.org/
|
||||
Group: System Environment/Daemons
|
||||
|
@ -75,6 +77,13 @@ BuildRequires: systemd-devel
|
|||
%if %{use_asan}
|
||||
BuildRequires: libasan
|
||||
%endif
|
||||
# If rust is enabled
|
||||
%if %{use_rust}
|
||||
BuildRequires: scl-utils
|
||||
BuildRequires: rust-toolset-%{rust_version}
|
||||
BuildRequires: rust-toolset-%{rust_version}-cargo
|
||||
BuildRequires: rust-toolset-%{rust_version}-rust
|
||||
%endif
|
||||
# Needed to support regeneration of the autotool artifacts.
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
|
@ -145,6 +154,10 @@ Requires: gperftools-libs
|
|||
Source0: https://releases.pagure.org/389-ds-base/%{name}-%{version}%{?prerel}.tar.bz2
|
||||
Source1: %{name}-git.sh
|
||||
Source2: %{name}-devel.README
|
||||
%if %{use_rust}
|
||||
Source3: vendor-%{version}-1.tar.gz
|
||||
Source4: Cargo.lock
|
||||
%endif
|
||||
Patch00: 0000-Issue-50800-wildcards-in-rootdn-allow-ip-attribute-a.patch
|
||||
Patch01: 0001-Issue-49437-Fix-memory-leak-with-indirect-COS.patch
|
||||
Patch02: 0002-Ticket-50905-intermittent-SSL-hang-with-rhds.patch
|
||||
|
@ -152,7 +165,7 @@ Patch03: 0003-Issue-51029-Add-db_home_dir-defaults.inf.patch
|
|||
Patch04: 0004-Ticket-51068-deadlock-when-updating-the-schema.patch
|
||||
Patch05: 0005-Issue-50745-ns-slapd-hangs-during-CleanAllRUV-tests.patch
|
||||
Patch06: 0006-Issue-51095-abort-operation-if-CSN-can-not-be-genera.patch
|
||||
Patch07: 0007-Issue-51132-Winsync-setting-winSyncWindowsFilter-not.patch
|
||||
Patch07: 0007-Issue-51132-Winsync-setting-winSyncWindowsFilter-not.patch
|
||||
Patch08: 0008-Issue-4389-errors-log-with-incorrectly-formatted-mes.patch
|
||||
Patch09: 0009-Issue-4297-On-ADD-replication-URP-issue-internal-sea.patch
|
||||
Patch10: 0010-Issue-4379-allow-more-than-1-empty-AttributeDescript.patch
|
||||
|
@ -186,6 +199,9 @@ Patch37: 0037-Issue-5155-RFE-Provide-an-option-to-abort-an-Auto-Me.patc
|
|||
Patch38: 0038-Issue-5221-User-with-expired-password-can-still-logi.patch
|
||||
Patch39: 0039-Issue-5098-Multiple-issues-around-replication-and-CI.patch
|
||||
Patch40: 0040-Issue-5418-Sync_repl-may-crash-while-managing-invali.patch
|
||||
Patch41: 0041-Issue-5565-Change-default-password-storage-scheme-to.patch
|
||||
Patch42: 0042-Issue-5440-memberof-is-slow-on-update-fixup-if-there.patch
|
||||
Patch43: 0043-Issue-5497-boolean-attributes-should-be-case-insensi.patch
|
||||
|
||||
|
||||
%description
|
||||
|
@ -255,6 +271,10 @@ The lib389 CI tests that can be run against the Directory Server.
|
|||
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-%{version}%{?prerel}
|
||||
%if %{use_rust}
|
||||
tar xvzf %{SOURCE3}
|
||||
cp %{SOURCE4} src/
|
||||
%endif
|
||||
cp %{SOURCE2} README.devel
|
||||
|
||||
%build
|
||||
|
@ -271,6 +291,14 @@ TCMALLOC_FLAGS="--enable-tcmalloc"
|
|||
ASAN_FLAGS="--enable-asan --enable-debug"
|
||||
%endif
|
||||
|
||||
%if %{use_rust}
|
||||
RUST_FLAGS="--enable-rust --enable-rust-offline"
|
||||
|
||||
set +e
|
||||
source scl_source enable rust-toolset-%{rust_version}
|
||||
set -e
|
||||
%endif
|
||||
|
||||
# Rebuild the autotool artifacts now.
|
||||
autoreconf -fiv
|
||||
|
||||
|
@ -279,7 +307,7 @@ autoreconf -fiv
|
|||
--with-systemdsystemconfdir=%{_sysconfdir}/systemd/system \
|
||||
--with-perldir=/usr/bin \
|
||||
--with-systemdgroupname=%{groupname} $NSSARGS \
|
||||
--with-systemd --enable-cmocka $TCMALLOC_FLAGS $ASAN_FLAGS
|
||||
--with-systemd --enable-cmocka $RUST_FLAGS $TCMALLOC_FLAGS $ASAN_FLAGS
|
||||
|
||||
# Generate symbolic info for debuggers
|
||||
export XCFLAGS=$RPM_OPT_FLAGS
|
||||
|
@ -540,6 +568,12 @@ fi
|
|||
%{_sysconfdir}/%{pkgname}/dirsrvtests
|
||||
|
||||
%changelog
|
||||
* Tue Feb 21 2023 Simon Pichugin <spichugi@redhat.com> - 1.3.11.1-1
|
||||
- Bump version to 1.3.11.1-1
|
||||
- Resolves: Bug 2170224 - Backport Rust password storage PBKDF2 schemes
|
||||
- Resolves: Bug 2170221 - Boolean attributes should be case insensitive
|
||||
- Resolves: Bug 2170218 - Slow memberof fixup task for large static groups, high CPU use
|
||||
|
||||
* Fri Sep 30 2022 Mark Reynolds <mreynolds@redhat.com> - 1.3.10-2-17
|
||||
- Bump version to 1.3.10.2-17
|
||||
- Resolves: Bug 2113056 - Import may break replication because changelog starting csn may not be created
|
||||
|
|
Loading…
Add table
Reference in a new issue