import 389-ds-base-1.4.3.34-1.module+el8.7.0+18367+58a49cb0

i8c-stream-1.4 changed/i8c-stream-1.4/389-ds-base-1.4.3.34-1.module+el8.7.0+18367+58a49cb0
MSVSphere Packaging Team 11 months ago
parent 8da546c550
commit 4333218214

@ -1,3 +1,3 @@
6dd2b4523735ae964fa5a8519ccd5be258a947c9 SOURCES/389-ds-base-1.4.3.32.tar.bz2
204dc26c2d598b837aa4350ddc3df4449c6852ea SOURCES/389-ds-base-1.4.3.34.tar.bz2
1c8f2d0dfbf39fa8cd86363bf3314351ab21f8d4 SOURCES/jemalloc-5.3.0.tar.bz2
44d04546a521aee1e09e85924e08cbd67d0a2d0c SOURCES/vendor-1.4.3.32-1.tar.gz
c24a7ec12257842852fd13c939c777fa4f0a03e4 SOURCES/vendor-1.4.3.34-2.tar.gz

4
.gitignore vendored

@ -1,3 +1,3 @@
SOURCES/389-ds-base-1.4.3.32.tar.bz2
SOURCES/389-ds-base-1.4.3.34.tar.bz2
SOURCES/jemalloc-5.3.0.tar.bz2
SOURCES/vendor-1.4.3.32-1.tar.gz
SOURCES/vendor-1.4.3.34-2.tar.gz

@ -1,440 +0,0 @@
From 9cdb6cb41b9c87c44e788cd1e354b14dbf4eb5f7 Mon Sep 17 00:00:00 2001
From: Mark Reynolds <mreynolds@redhat.com>
Date: Wed, 16 Nov 2022 16:37:05 -0500
Subject: [PATCH 1/3] Issue 5532 - Make db compaction TOD day more robust.
Bug Description:
The time of day compaction setting does not promise that the compaction
will happen as configured. This is becuase the compaction interval
starts when the server is started. Once it wakes up and we are "past"
the TOD setting then we compact, but it can happen at any time
once the TOD has passed.
Fix Description:
Once the compaction interval is hit we create an "event" with the
exact time the compaction should start.
relates: #5532
Reviewed by: tbordaz & spichugi(Thanks!!)
---
.../tests/suites/config/compact_test.py | 29 +++--
ldap/servers/plugins/replication/cl5_api.c | 58 +++++----
.../slapd/back-ldbm/db-bdb/bdb_layer.c | 118 ++++++++++++------
.../slapd/back-ldbm/db-bdb/bdb_layer.h | 2 +-
4 files changed, 136 insertions(+), 71 deletions(-)
diff --git a/dirsrvtests/tests/suites/config/compact_test.py b/dirsrvtests/tests/suites/config/compact_test.py
index 1f1c097e4..2e8dee4bb 100644
--- a/dirsrvtests/tests/suites/config/compact_test.py
+++ b/dirsrvtests/tests/suites/config/compact_test.py
@@ -2,6 +2,7 @@ import logging
import pytest
import os
import time
+import datetime
from lib389.tasks import DBCompactTask
from lib389.backend import DatabaseConfig
from lib389.replica import Changelog5
@@ -53,22 +54,34 @@ def test_compaction_interval_and_time(topo):
inst = topo.ms["supplier1"]
- # Configure DB compaction
- config = DatabaseConfig(inst)
- config.set([('nsslapd-db-compactdb-interval', '2'), ('nsslapd-db-compactdb-time', '00:01')])
+ # Calculate the compaction time (2 minutes from now)
+ now = datetime.datetime.now()
+ current_hour = now.hour
+ current_minute = now.minute + 2
+ if current_hour < 10:
+ hour = "0" + str(current_hour)
+ else:
+ hour = str(current_hour)
+ if current_minute < 10:
+ minute = "0" + str(current_minute)
+ else:
+ minute = str(current_minute)
+ compact_time = hour + ":" + minute
# Configure changelog compaction
cl5 = Changelog5(inst)
cl5.replace_many(
('nsslapd-changelogcompactdb-interval', '2'),
- ('nsslapd-changelogcompactdb-time', '00:01'),
- ('nsslapd-changelogtrim-interval', '2')
+ ('nsslapd-changelogcompactdb-time', compact_time),
+ ('nsslapd-changelogtrim-interval', '2')
)
inst.deleteErrorLogs()
- # Check is compaction occurred
- time.sleep(6)
- assert inst.searchErrorsLog("Compacting databases")
+ # Check compaction occurred as expected
+ time.sleep(60)
+ assert not inst.searchErrorsLog("compacting replication changelogs")
+
+ time.sleep(61)
assert inst.searchErrorsLog("compacting replication changelogs")
inst.deleteErrorLogs(restart=False)
diff --git a/ldap/servers/plugins/replication/cl5_api.c b/ldap/servers/plugins/replication/cl5_api.c
index 43fa5bd46..5d4edea92 100644
--- a/ldap/servers/plugins/replication/cl5_api.c
+++ b/ldap/servers/plugins/replication/cl5_api.c
@@ -103,6 +103,7 @@
#define NO_DISK_SPACE 1024
#define MIN_DISK_SPACE 10485760 /* 10 MB */
+#define _SEC_PER_DAY 86400
/***** Data Definitions *****/
@@ -293,6 +294,7 @@ static int _cl5FileEndsWith(const char *filename, const char *ext);
static PRLock *cl5_diskfull_lock = NULL;
static int cl5_diskfull_flag = 0;
+static PRBool compacting = PR_FALSE;
static void cl5_set_diskfull(void);
static void cl5_set_no_diskfull(void);
@@ -3099,7 +3101,7 @@ _cl5TrimCleanup(void)
static time_t
_cl5_get_tod_expiration(char *expire_time)
{
- time_t start_time, todays_elapsed_time, now = time(NULL);
+ time_t todays_elapsed_time, now = time(NULL);
struct tm *tm_struct = localtime(&now);
char hour_str[3] = {0};
char min_str[3] = {0};
@@ -3109,9 +3111,8 @@ _cl5_get_tod_expiration(char *expire_time)
/* Get today's start time */
todays_elapsed_time = (tm_struct->tm_hour * 3600) + (tm_struct->tm_min * 60) + (tm_struct->tm_sec);
- start_time = slapi_current_utc_time() - todays_elapsed_time;
- /* Get the hour and minute and calculate the expiring time. The time was
+ /* Get the hour and minute and calculate the expiring TOD. The time was
* already validated in bdb_config.c: HH:MM */
hour_str[0] = *s++;
hour_str[1] = *s++;
@@ -3122,7 +3123,34 @@ _cl5_get_tod_expiration(char *expire_time)
min = strtoll(min_str, &endp, 10);
expiring_time = (hour * 60 * 60) + (min * 60);
- return start_time + expiring_time;
+ /* Calculate the time in seconds when the compaction should start, midnight
+ * requires special treatment (for both current time and configured TOD) */
+ if (expiring_time == 0) {
+ /* Compaction TOD configured for midnight */
+ if (todays_elapsed_time == 0) {
+ /* It's currently midnight, compact now! */
+ return 0;
+ } else {
+ /* Return the time until it's midnight */
+ return _SEC_PER_DAY - todays_elapsed_time;
+ }
+ } else if (todays_elapsed_time == 0) {
+ /* It's currently midnight, just use the configured TOD */
+ return expiring_time;
+ } else if (todays_elapsed_time > expiring_time) {
+ /* We missed TOD today, do it tomorrow */
+ return _SEC_PER_DAY - (todays_elapsed_time - expiring_time);
+ } else {
+ /* Compaction is coming up */
+ return expiring_time - todays_elapsed_time;
+ }
+}
+
+static void
+do_cl_compact(time_t when, void *arg)
+{
+ cl5CompactDBs();
+ compacting = PR_FALSE;
}
static int
@@ -3131,7 +3159,6 @@ _cl5TrimMain(void *param __attribute__((unused)))
time_t timePrev = slapi_current_utc_time();
time_t timeCompactPrev = slapi_current_utc_time();
time_t timeNow;
- PRBool compacting = PR_FALSE;
int32_t compactdb_time = 0;
PR_AtomicIncrement(&s_cl5Desc.threadCount);
@@ -3144,25 +3171,14 @@ _cl5TrimMain(void *param __attribute__((unused)))
_cl5DoTrimming();
}
- if (!compacting) {
- /* Once we know we want to compact we need to stop refreshing the
- * TOD expiration. Otherwise if the compact time is close to
- * midnight we could roll over past midnight during the checkpoint
- * sleep interval, and we'd never actually compact the databases.
- * We also need to get this value before the sleep.
- */
- compactdb_time = _cl5_get_tod_expiration(s_cl5Desc.dbTrim.compactTime);
- }
if ((s_cl5Desc.dbTrim.compactInterval > 0) &&
- (timeNow - timeCompactPrev >= s_cl5Desc.dbTrim.compactInterval))
+ (timeNow - timeCompactPrev >= s_cl5Desc.dbTrim.compactInterval) &&
+ !compacting)
{
compacting = PR_TRUE;
- if (slapi_current_utc_time() > compactdb_time) {
- /* time to trim */
- timeCompactPrev = timeNow;
- cl5CompactDBs();
- compacting = PR_FALSE;
- }
+ compactdb_time = _cl5_get_tod_expiration(s_cl5Desc.dbTrim.compactTime);
+ slapi_eq_once_rel(do_cl_compact, NULL, slapi_current_rel_time_t() + compactdb_time);
+ timeCompactPrev = timeNow;
}
if (NULL == s_cl5Desc.clLock) {
/* most likely, emergency */
diff --git a/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c b/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c
index 3e29feb50..b433fa919 100644
--- a/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c
+++ b/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c
@@ -95,6 +95,7 @@ static int trans_batch_txn_max_sleep = 50;
static PRBool log_flush_thread = PR_FALSE;
static int txn_in_progress_count = 0;
static int *txn_log_flush_pending = NULL;
+static PRBool compacting = PR_FALSE;
static pthread_mutex_t sync_txn_log_flush;
static pthread_cond_t sync_txn_log_flush_done;
@@ -3646,13 +3647,12 @@ log_flush_threadmain(void *param)
}
/*
- * This refreshes the TOD expiration. So live changes to the configuration
- * will take effect immediately.
+ * Get the time in seconds when the compaction should occur
*/
static time_t
bdb_get_tod_expiration(char *expire_time)
{
- time_t start_time, todays_elapsed_time, now = time(NULL);
+ time_t todays_elapsed_time, now = time(NULL);
struct tm *tm_struct = localtime(&now);
char hour_str[3] = {0};
char min_str[3] = {0};
@@ -3662,9 +3662,8 @@ bdb_get_tod_expiration(char *expire_time)
/* Get today's start time */
todays_elapsed_time = (tm_struct->tm_hour * 3600) + (tm_struct->tm_min * 60) + (tm_struct->tm_sec);
- start_time = slapi_current_utc_time() - todays_elapsed_time;
- /* Get the hour and minute and calculate the expiring time. The time was
+ /* Get the hour and minute and calculate the expiring TOD. The time was
* already validated in bdb_config.c: HH:MM */
hour_str[0] = *s++;
hour_str[1] = *s++;
@@ -3675,7 +3674,55 @@ bdb_get_tod_expiration(char *expire_time)
min = strtoll(min_str, &endp, 10);
expiring_time = (hour * 60 * 60) + (min * 60);
- return start_time + expiring_time;
+ /* Calculate the time in seconds when the compaction should start, midnight
+ * requires special treatment (for both current time and configured TOD) */
+ if (expiring_time == 0) {
+ /* Compaction TOD configured for midnight */
+ if (todays_elapsed_time == 0) {
+ /* It's currently midnight, compact now! */
+ return 0;
+ } else {
+ /* Return the time until it's midnight */
+ return _SEC_PER_DAY - todays_elapsed_time;
+ }
+ } else if (todays_elapsed_time == 0) {
+ /* It's currently midnight, just use the configured TOD */
+ return expiring_time;
+ } else if (todays_elapsed_time > expiring_time) {
+ /* We missed TOD today, do it tomorrow */
+ return _SEC_PER_DAY - (todays_elapsed_time - expiring_time);
+ } else {
+ /* Compaction is coming up */
+ return expiring_time - todays_elapsed_time;
+ }
+}
+
+static void
+bdb_compact(time_t when, void *arg)
+{
+ struct ldbminfo *li = (struct ldbminfo *)arg;
+ Object *inst_obj;
+ ldbm_instance *inst;
+ DB *db = NULL;
+ int rc = 0;
+
+ for (inst_obj = objset_first_obj(li->li_instance_set);
+ inst_obj;
+ inst_obj = objset_next_obj(li->li_instance_set, inst_obj))
+ {
+ inst = (ldbm_instance *)object_get_data(inst_obj);
+ rc = dblayer_get_id2entry(inst->inst_be, &db);
+ if (!db || rc) {
+ continue;
+ }
+ slapi_log_err(SLAPI_LOG_NOTICE, "bdb_compact", "Compacting DB start: %s\n",
+ inst->inst_name);
+ /* Time to compact the DB's */
+ dblayer_force_checkpoint(li);
+ bdb_do_compact(li);
+ dblayer_force_checkpoint(li);
+ }
+ compacting = PR_FALSE;
}
/*
@@ -3763,15 +3810,6 @@ checkpoint_threadmain(void *param)
PR_Lock(li->li_config_mutex);
checkpoint_interval_update = (time_t)BDB_CONFIG(li)->bdb_checkpoint_interval;
compactdb_interval_update = (time_t)BDB_CONFIG(li)->bdb_compactdb_interval;
- if (!compacting) {
- /* Once we know we want to compact we need to stop refreshing the
- * TOD expiration. Otherwise if the compact time is close to
- * midnight we could roll over past midnight during the checkpoint
- * sleep interval, and we'd never actually compact the databases.
- * We also need to get this value before the sleep.
- */
- compactdb_time = bdb_get_tod_expiration((char *)BDB_CONFIG(li)->bdb_compactdb_time);
- }
PR_Unlock(li->li_config_mutex);
if (compactdb_interval_update != compactdb_interval) {
@@ -3861,23 +3899,21 @@ checkpoint_threadmain(void *param)
* this could have been a bug in fact, where compactdb_interval
* was 0, if you change while running it would never take effect ....
*/
- if (slapi_timespec_expire_check(&compactdb_expire) == TIMER_EXPIRED) {
- compacting = PR_TRUE;
- if (slapi_current_utc_time() < compactdb_time) {
- /* We have passed the interval, but we need to wait for a
- * particular TOD to pass before compacting */
- continue;
- }
+ if (compactdb_interval_update != compactdb_interval ||
+ (slapi_timespec_expire_check(&compactdb_expire) == TIMER_EXPIRED && !compacting))
+ {
+ /* Get the time in second when the compaction should occur */
+ PR_Lock(li->li_config_mutex);
+ compactdb_time = bdb_get_tod_expiration((char *)BDB_CONFIG(li)->bdb_compactdb_time);
+ PR_Unlock(li->li_config_mutex);
- /* Time to compact the DB's */
- dblayer_force_checkpoint(li);
- bdb_compact(li);
- dblayer_force_checkpoint(li);
+ /* Start compaction event */
+ compacting = PR_TRUE;
+ slapi_eq_once_rel(bdb_compact, (void *)li, slapi_current_rel_time_t() + compactdb_time);
- /* Now reset the timer and compacting flag */
+ /* reset interval timer */
compactdb_interval = compactdb_interval_update;
slapi_timespec_expire_at(compactdb_interval, &compactdb_expire);
- compacting = PR_FALSE;
}
}
slapi_log_err(SLAPI_LOG_HOUSE, "checkpoint_threadmain", "Check point before leaving\n");
@@ -6210,14 +6246,14 @@ ldbm_back_compact(Slapi_Backend *be)
li = (struct ldbminfo *)be->be_database->plg_private;
dblayer_force_checkpoint(li);
- rc = bdb_compact(li);
+ rc = bdb_do_compact(li);
dblayer_force_checkpoint(li);
return rc;
}
int32_t
-bdb_compact(struct ldbminfo *li)
+bdb_do_compact(struct ldbminfo *li)
{
Object *inst_obj;
ldbm_instance *inst;
@@ -6237,7 +6273,7 @@ bdb_compact(struct ldbminfo *li)
if (!db || rc) {
continue;
}
- slapi_log_err(SLAPI_LOG_NOTICE, "bdb_compact", "Compacting DB start: %s\n",
+ slapi_log_err(SLAPI_LOG_NOTICE, "bdb_do_compact", "Compacting DB start: %s\n",
inst->inst_name);
/*
@@ -6249,15 +6285,15 @@ bdb_compact(struct ldbminfo *li)
DBTYPE type;
rc = db->get_type(db, &type);
if (rc) {
- slapi_log_err(SLAPI_LOG_ERR, "bdb_compact",
- "compactdb: failed to determine db type for %s: db error - %d %s\n",
+ slapi_log_err(SLAPI_LOG_ERR, "bdb_do_compact",
+ "Failed to determine db type for %s: db error - %d %s\n",
inst->inst_name, rc, db_strerror(rc));
continue;
}
rc = dblayer_txn_begin(inst->inst_be, NULL, &txn);
if (rc) {
- slapi_log_err(SLAPI_LOG_ERR, "bdb_compact", "compactdb: transaction begin failed: %d\n", rc);
+ slapi_log_err(SLAPI_LOG_ERR, "bdb_do_compact", "Transaction begin failed: %d\n", rc);
break;
}
/*
@@ -6274,26 +6310,26 @@ bdb_compact(struct ldbminfo *li)
rc = db->compact(db, txn.back_txn_txn, NULL /*start*/, NULL /*stop*/,
&c_data, compact_flags, NULL /*end*/);
if (rc) {
- slapi_log_err(SLAPI_LOG_ERR, "bdb_compact",
- "compactdb: failed to compact %s; db error - %d %s\n",
+ slapi_log_err(SLAPI_LOG_ERR, "bdb_do_compact",
+ "Failed to compact %s; db error - %d %s\n",
inst->inst_name, rc, db_strerror(rc));
if ((rc = dblayer_txn_abort(inst->inst_be, &txn))) {
- slapi_log_err(SLAPI_LOG_ERR, "bdb_compact", "compactdb: failed to abort txn (%s) db error - %d %s\n",
+ slapi_log_err(SLAPI_LOG_ERR, "bdb_do_compact", "Failed to abort txn (%s) db error - %d %s\n",
inst->inst_name, rc, db_strerror(rc));
break;
}
} else {
- slapi_log_err(SLAPI_LOG_NOTICE, "bdb_compact",
- "compactdb: compact %s - %d pages freed\n",
+ slapi_log_err(SLAPI_LOG_NOTICE, "bdb_do_compact",
+ "compact %s - %d pages freed\n",
inst->inst_name, c_data.compact_pages_free);
if ((rc = dblayer_txn_commit(inst->inst_be, &txn))) {
- slapi_log_err(SLAPI_LOG_ERR, "bdb_compact", "compactdb: failed to commit txn (%s) db error - %d %s\n",
+ slapi_log_err(SLAPI_LOG_ERR, "bdb_do_compact", "failed to commit txn (%s) db error - %d %s\n",
inst->inst_name, rc, db_strerror(rc));
break;
}
}
}
- slapi_log_err(SLAPI_LOG_NOTICE, "bdb_compact", "Compacting databases finished.\n");
+ slapi_log_err(SLAPI_LOG_NOTICE, "bdb_do_compact", "Compacting databases finished.\n");
return rc;
}
diff --git a/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.h b/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.h
index e3a49dbac..65a633193 100644
--- a/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.h
+++ b/ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.h
@@ -97,7 +97,7 @@ int bdb_db_size(Slapi_PBlock *pb);
int bdb_upgradedb(Slapi_PBlock *pb);
int bdb_upgradednformat(Slapi_PBlock *pb);
int bdb_upgradeddformat(Slapi_PBlock *pb);
-int32_t bdb_compact(struct ldbminfo *li);
+int32_t bdb_do_compact(struct ldbminfo *li);
int bdb_restore(struct ldbminfo *li, char *src_dir, Slapi_Task *task);
int bdb_cleanup(struct ldbminfo *li);
int bdb_txn_begin(struct ldbminfo *li, back_txnid parent_txn, back_txn *txn, PRBool use_lock);
--
2.38.1

@ -1,30 +0,0 @@
From adb1baa6fd9fcfa0ca6d4a84d918e25adc405afd Mon Sep 17 00:00:00 2001
From: Mark Reynolds <mreynolds@redhat.com>
Date: Mon, 28 Nov 2022 09:47:09 -0500
Subject: [PATCH 2/3] Issue 5544 - Increase default task TTL
Description: Increase the Time To Live of tasks from 1 hour to 12 hours
relates: https://github.com/389ds/389-ds-base/issues/5544
Reviewed by: progier(Thanks!)
---
ldap/servers/slapd/task.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ldap/servers/slapd/task.c b/ldap/servers/slapd/task.c
index 71d5a2fb5..1a8be6c85 100644
--- a/ldap/servers/slapd/task.c
+++ b/ldap/servers/slapd/task.c
@@ -48,7 +48,7 @@ static uint64_t shutting_down = 0;
#define TASK_DATE_NAME "nsTaskCreated"
#define TASK_WARNING_NAME "nsTaskWarning"
-#define DEFAULT_TTL "3600" /* seconds */
+#define DEFAULT_TTL "43200" /* 12 hours in seconds */
#define TASK_SYSCONFIG_FILE_ATTR "sysconfigfile" /* sysconfig reload task file attr */
#define TASK_SYSCONFIG_LOGCHANGES_ATTR "logchanges"
#define TASK_TOMBSTONE_FIXUP "fixup tombstones task"
--
2.38.1

@ -1,219 +0,0 @@
From 59ebf6618126547f3861fbef0b9a268f40ccb2bd Mon Sep 17 00:00:00 2001
From: Mark Reynolds <mreynolds@redhat.com>
Date: Tue, 13 Dec 2022 09:41:34 -0500
Subject: [PATCH 3/3] Issue 5413 - Allow mutliple MemberOf fixup tasks with
different bases/filters
Description:
A change was made to only allow a single fixup task at a time, but there are
cases where you would want to run mutliple tasks but on different branches/filters.
Now we maintain a linked list of bases/filters of the current running tasks to
monitor this.
relates: https://github.com/389ds/389-ds-base/issues/5413
Reviewed by: tbordaz(Thanks!)
---
.../suites/memberof_plugin/fixup_test.py | 5 +-
ldap/servers/plugins/memberof/memberof.c | 101 ++++++++++++++----
2 files changed, 85 insertions(+), 21 deletions(-)
diff --git a/dirsrvtests/tests/suites/memberof_plugin/fixup_test.py b/dirsrvtests/tests/suites/memberof_plugin/fixup_test.py
index 9566e144c..d5369439f 100644
--- a/dirsrvtests/tests/suites/memberof_plugin/fixup_test.py
+++ b/dirsrvtests/tests/suites/memberof_plugin/fixup_test.py
@@ -59,12 +59,15 @@ def test_fixup_task_limit(topo):
with pytest.raises(ldap.UNWILLING_TO_PERFORM):
memberof.fixup(DEFAULT_SUFFIX)
+ # Add second task but on different suffix which should be allowed
+ memberof.fixup("ou=people," + DEFAULT_SUFFIX)
+
# Wait for first task to complete
task.wait()
# Add new task which should be allowed now
memberof.fixup(DEFAULT_SUFFIX)
-
+
if __name__ == '__main__':
# Run isolated
diff --git a/ldap/servers/plugins/memberof/memberof.c b/ldap/servers/plugins/memberof/memberof.c
index f3f817f89..a5f48d2c0 100644
--- a/ldap/servers/plugins/memberof/memberof.c
+++ b/ldap/servers/plugins/memberof/memberof.c
@@ -52,7 +52,6 @@ static Slapi_DN* _pluginDN = NULL;
MemberOfConfig *qsortConfig = 0;
static int usetxn = 0;
static int premodfn = 0;
-static PRBool fixup_running = PR_FALSE;
static PRLock *fixup_lock = NULL;
static int32_t fixup_progress_count = 0;
static int64_t fixup_progress_elapsed = 0;
@@ -65,6 +64,15 @@ typedef struct _memberofstringll
void *next;
} memberofstringll;
+typedef struct _fixup_ll
+{
+ Slapi_DN *sdn;
+ char *filter_str;
+ void *next;
+} mo_fixup_ll;
+
+static mo_fixup_ll *fixup_list = NULL;
+
typedef struct _memberof_get_groups_data
{
MemberOfConfig *config;
@@ -438,6 +446,15 @@ memberof_postop_close(Slapi_PBlock *pb __attribute__((unused)))
PR_DestroyLock(fixup_lock);
fixup_lock = NULL;
+ mo_fixup_ll *fixup_task = fixup_list;
+ while (fixup_task != NULL) {
+ mo_fixup_ll *tmp = fixup_task;
+ fixup_task = fixup_task->next;
+ slapi_sdn_free(&tmp->sdn);
+ slapi_ch_free_string(&tmp->filter_str);
+ slapi_ch_free((void**)&tmp);
+ }
+
slapi_log_err(SLAPI_LOG_TRACE, MEMBEROF_PLUGIN_SUBSYSTEM,
"<-- memberof_postop_close\n");
return 0;
@@ -2817,7 +2834,6 @@ memberof_fixup_task_thread(void *arg)
}
PR_Lock(fixup_lock);
- fixup_running = PR_TRUE;
fixup_progress_count = 0;
fixup_progress_elapsed = slapi_current_rel_time_t();
fixup_start_time = slapi_current_rel_time_t();
@@ -2849,11 +2865,10 @@ memberof_fixup_task_thread(void *arg)
/* Mark this as a task operation */
configCopy.fixup_task = 1;
configCopy.task = task;
-
+ Slapi_DN *sdn = slapi_sdn_new_dn_byref(td->dn);
if (usetxn) {
- Slapi_DN *sdn = slapi_sdn_new_dn_byref(td->dn);
Slapi_Backend *be = slapi_be_select_exact(sdn);
- slapi_sdn_free(&sdn);
+
if (be) {
fixup_pb = slapi_pblock_new();
slapi_pblock_set(fixup_pb, SLAPI_BACKEND, be);
@@ -2894,14 +2909,37 @@ done:
fixup_progress_count, slapi_current_rel_time_t() - fixup_start_time);
slapi_task_inc_progress(task);
+ /* Cleanup task linked list */
+ PR_Lock(fixup_lock);
+ mo_fixup_ll *prev = NULL;
+ for (mo_fixup_ll *curr = fixup_list; curr; curr = curr->next) {
+ mo_fixup_ll *next = curr->next;
+ if (slapi_sdn_compare(curr->sdn, sdn) == 0 &&
+ strcasecmp(curr->filter_str, td->filter_str) == 0)
+ {
+ /* free current code */
+ slapi_sdn_free(&curr->sdn);
+ slapi_ch_free_string(&curr->filter_str);
+ slapi_ch_free((void**)&curr);
+
+ /* update linked list */
+ if (prev == NULL) {
+ /* first node */
+ fixup_list = next;
+ } else {
+ prev->next = next;
+ }
+ break;
+ }
+ prev = curr;
+ }
+ PR_Unlock(fixup_lock);
+ slapi_sdn_free(&sdn);
+
/* this will queue the destruction of the task */
slapi_task_finish(task, rc);
slapi_task_dec_refcount(task);
- PR_Lock(fixup_lock);
- fixup_running = PR_FALSE;
- PR_Unlock(fixup_lock);
-
slapi_log_err(SLAPI_LOG_INFO, MEMBEROF_PLUGIN_SUBSYSTEM,
"memberof_fixup_task_thread - Memberof task finished (processed %d entries in %ld seconds)\n",
fixup_progress_count, slapi_current_rel_time_t() - fixup_start_time);
@@ -2919,23 +2957,13 @@ memberof_task_add(Slapi_PBlock *pb,
int rv = SLAPI_DSE_CALLBACK_OK;
task_data *mytaskdata = NULL;
Slapi_Task *task = NULL;
+ Slapi_DN *sdn = NULL;
char *bind_dn;
const char *filter;
const char *dn = 0;
*returncode = LDAP_SUCCESS;
- PR_Lock(fixup_lock);
- if (fixup_running) {
- PR_Unlock(fixup_lock);
- *returncode = LDAP_UNWILLING_TO_PERFORM;
- slapi_log_err(SLAPI_LOG_ERR, MEMBEROF_PLUGIN_SUBSYSTEM,
- "memberof_task_add - there is already a fixup task running\n");
- rv = SLAPI_DSE_CALLBACK_ERROR;
- goto out;
- }
- PR_Unlock(fixup_lock);
-
/* get arg(s) */
if ((dn = slapi_entry_attr_get_ref(e, "basedn")) == NULL) {
*returncode = LDAP_OBJECT_CLASS_VIOLATION;
@@ -2949,6 +2977,39 @@ memberof_task_add(Slapi_PBlock *pb,
goto out;
}
+ PR_Lock(fixup_lock);
+ sdn = slapi_sdn_new_dn_byval(dn);
+ if (fixup_list == NULL) {
+ fixup_list = (mo_fixup_ll *)slapi_ch_calloc(1, sizeof(mo_fixup_ll));
+ fixup_list->sdn = sdn;
+ fixup_list->filter_str = slapi_ch_strdup(filter);
+ } else {
+ for (mo_fixup_ll *fixup_task = fixup_list; fixup_task; fixup_task = fixup_task->next) {
+ if (slapi_sdn_compare(sdn, fixup_task->sdn) == 0 &&
+ strcasecmp(filter, fixup_task->filter_str) == 0)
+ {
+ /* Found an identical running task, reject it */
+ PR_Unlock(fixup_lock);
+ slapi_log_err(SLAPI_LOG_ERR, MEMBEROF_PLUGIN_SUBSYSTEM,
+ "memberof_task_add - there is already an identical fixup task running: base: %s filter: %s\n",
+ slapi_sdn_get_dn(sdn), filter);
+ slapi_sdn_free(&sdn);
+ *returncode = LDAP_UNWILLING_TO_PERFORM;
+ rv = SLAPI_DSE_CALLBACK_ERROR;
+ goto out;
+ }
+ }
+ /* Add the new task DN to the top of the list */
+ mo_fixup_ll *head = fixup_list;
+ mo_fixup_ll *new_task = (mo_fixup_ll *)slapi_ch_calloc(1, sizeof(mo_fixup_ll));
+ new_task->sdn = sdn;
+ new_task->filter_str = slapi_ch_strdup(filter);
+ new_task->next = head;
+ fixup_list = new_task;
+ }
+ PR_Unlock(fixup_lock);
+
+
/* setup our task data */
slapi_pblock_get(pb, SLAPI_REQUESTOR_DN, &bind_dn);
mytaskdata = (task_data *)slapi_ch_malloc(sizeof(task_data));
--
2.38.1

@ -1,28 +0,0 @@
From 7f0d007f3d15dec801acdaf3794f4e37db9c9875 Mon Sep 17 00:00:00 2001
From: James Chapman <jachapma@redhat.com>
Date: Wed, 9 Nov 2022 09:49:47 +0000
Subject: [PATCH 1/2] Issue 5505 - Fix compiler warning (#5506)
relates: https://github.com/389ds/389-ds-base/issues/5505
Reviewed by: @Firstyear (Thanks)
---
ldap/servers/plugins/retrocl/retrocl_trim.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ldap/servers/plugins/retrocl/retrocl_trim.c b/ldap/servers/plugins/retrocl/retrocl_trim.c
index 37e5fbea7..d6b24c8bf 100644
--- a/ldap/servers/plugins/retrocl/retrocl_trim.c
+++ b/ldap/servers/plugins/retrocl/retrocl_trim.c
@@ -23,7 +23,7 @@ typedef struct _trim_status
int ts_s_trimming; /* non-zero if trimming in progress */
PRLock *ts_s_trim_mutex; /* protects ts_s_trimming */
} trim_status;
-static trim_status ts = {0L, 0L, 0, 0, NULL};
+static trim_status ts = {0};
/*
* All standard changeLogEntry attributes (initialized in get_cleattrs)
--
2.38.1

@ -1,85 +0,0 @@
From 1a192048a49fcdfa8bcfe79e2fa86153b339fac1 Mon Sep 17 00:00:00 2001
From: Mark Reynolds <mreynolds@redhat.com>
Date: Tue, 13 Dec 2022 17:00:28 -0500
Subject: [PATCH 2/2] Issue 5565 - Change default password storage scheme
Descriptrion: Becuase of replication we need to use a default storage scheme
that works on 389-ds-base-1.3.10
relates: https://github.com/389ds/389-ds-base/issues/5565
Reviewed by: spichugi & firstyear(thanks!!)
---
.../tests/suites/healthcheck/health_security_test.py | 8 ++++----
dirsrvtests/tests/suites/password/pwp_test.py | 2 +-
ldap/servers/slapd/pw.c | 3 ++-
src/lib389/lib389/config.py | 2 +-
4 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/dirsrvtests/tests/suites/healthcheck/health_security_test.py b/dirsrvtests/tests/suites/healthcheck/health_security_test.py
index 519107365..d14b52c7a 100644
--- a/dirsrvtests/tests/suites/healthcheck/health_security_test.py
+++ b/dirsrvtests/tests/suites/healthcheck/health_security_test.py
@@ -1,5 +1,5 @@
# --- BEGIN COPYRIGHT BLOCK ---
-# Copyright (C) 2020 Red Hat, Inc.
+# Copyright (C) 2022 Red Hat, Inc.
# All rights reserved.
#
# License: GPL (version 3 or any later version).
@@ -113,9 +113,9 @@ def test_healthcheck_insecure_pwd_hash_configured(topology_st):
standalone.config.set('passwordStorageScheme', 'SSHA512')
standalone.config.set('nsslapd-rootpwstoragescheme', 'SSHA512')
else:
- log.info('Set passwordStorageScheme and nsslapd-rootpwstoragescheme to PBKDF2-SHA512')
- standalone.config.set('passwordStorageScheme', 'PBKDF2-SHA512')
- standalone.config.set('nsslapd-rootpwstoragescheme', 'PBKDF2-SHA512')
+ log.info('Set passwordStorageScheme and nsslapd-rootpwstoragescheme to PBKDF2_SHA256')
+ standalone.config.set('passwordStorageScheme', 'PBKDF2_SHA256')
+ standalone.config.set('nsslapd-rootpwstoragescheme', 'PBKDF2_SHA256')
run_healthcheck_and_flush_log(topology_st, standalone, json=False, searched_code=CMD_OUTPUT)
run_healthcheck_and_flush_log(topology_st, standalone, json=True, searched_code=JSON_OUTPUT)
diff --git a/dirsrvtests/tests/suites/password/pwp_test.py b/dirsrvtests/tests/suites/password/pwp_test.py
index ce45bc364..190881222 100644
--- a/dirsrvtests/tests/suites/password/pwp_test.py
+++ b/dirsrvtests/tests/suites/password/pwp_test.py
@@ -27,7 +27,7 @@ else:
if is_fips():
DEFAULT_PASSWORD_STORAGE_SCHEME = 'SSHA512'
else:
- DEFAULT_PASSWORD_STORAGE_SCHEME = 'PBKDF2-SHA512'
+ DEFAULT_PASSWORD_STORAGE_SCHEME = 'PBKDF2_SHA256'
def _create_user(topo, uid, cn, uidNumber, userpassword):
diff --git a/ldap/servers/slapd/pw.c b/ldap/servers/slapd/pw.c
index 825498858..566ba87dd 100644
--- a/ldap/servers/slapd/pw.c
+++ b/ldap/servers/slapd/pw.c
@@ -280,7 +280,8 @@ pw_name2scheme(char *name)
} else {
/* if not, let's setup pbkdf2 */
#ifdef RUST_ENABLE
- char *pbkdf = "PBKDF2-SHA512";
+ /* until 1.3.10 supports Rust hashers we can't use PBKDF2-SHA512 by default */
+ char *pbkdf = "PBKDF2_SHA256";
#else
char *pbkdf = "PBKDF2_SHA256";
#endif
diff --git a/src/lib389/lib389/config.py b/src/lib389/lib389/config.py
index c7abdf778..c178eb02f 100644
--- a/src/lib389/lib389/config.py
+++ b/src/lib389/lib389/config.py
@@ -209,7 +209,7 @@ class Config(DSLdapObject):
yield report
def _lint_passwordscheme(self):
- allowed_schemes = ['SSHA512', 'PBKDF2-SHA512', 'GOST_YESCRYPT']
+ allowed_schemes = ['SSHA512', 'PBKDF2_SHA256', 'GOST_YESCRYPT']
u_password_scheme = self.get_attr_val_utf8('passwordStorageScheme')
u_root_scheme = self.get_attr_val_utf8('nsslapd-rootpwstoragescheme')
if u_root_scheme not in allowed_schemes or u_password_scheme not in allowed_schemes:
--
2.38.1

261
SOURCES/Cargo.lock generated

@ -76,9 +76,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.0.76"
version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f"
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
dependencies = [
"jobserver",
]
@ -137,9 +137,9 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
version = "0.5.6"
version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
dependencies = [
"cfg-if",
"crossbeam-utils",
@ -147,9 +147,9 @@ dependencies = [
[[package]]
name = "crossbeam-deque"
version = "0.8.2"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
dependencies = [
"cfg-if",
"crossbeam-epoch",
@ -158,9 +158,9 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
version = "0.9.11"
version = "0.9.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
dependencies = [
"autocfg",
"cfg-if",
@ -171,9 +171,9 @@ dependencies = [
[[package]]
name = "crossbeam-queue"
version = "0.3.6"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7"
checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
dependencies = [
"cfg-if",
"crossbeam-utils",
@ -181,9 +181,9 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
version = "0.8.12"
version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
dependencies = [
"cfg-if",
]
@ -210,11 +210,32 @@ dependencies = [
"uuid",
]
[[package]]
name = "errno"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
dependencies = [
"errno-dragonfly",
"libc",
"winapi",
]
[[package]]
name = "errno-dragonfly"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
dependencies = [
"cc",
"libc",
]
[[package]]
name = "fastrand"
version = "1.8.0"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
dependencies = [
"instant",
]
@ -285,26 +306,36 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "io-lifetimes"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfa919a82ea574332e2de6e74b4c36e74d41982b335080fa59d4ef31be20fdf3"
dependencies = [
"libc",
"windows-sys 0.45.0",
]
[[package]]
name = "itoa"
version = "1.0.4"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
[[package]]
name = "jobserver"
version = "0.1.25"
version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b"
checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
dependencies = [
"libc",
]
[[package]]
name = "libc"
version = "0.2.137"
version = "0.2.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
[[package]]
name = "librnsslapd"
@ -325,6 +356,12 @@ dependencies = [
"slapd",
]
[[package]]
name = "linux-raw-sys"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
[[package]]
name = "lock_api"
version = "0.4.9"
@ -355,24 +392,24 @@ dependencies = [
[[package]]
name = "memoffset"
version = "0.6.5"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
dependencies = [
"autocfg",
]
[[package]]
name = "once_cell"
version = "1.16.0"
version = "1.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
[[package]]
name = "openssl"
version = "0.10.42"
version = "0.10.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1"
dependencies = [
"bitflags",
"cfg-if",
@ -396,9 +433,9 @@ dependencies = [
[[package]]
name = "openssl-sys"
version = "0.9.77"
version = "0.9.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a"
checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7"
dependencies = [
"autocfg",
"cc",
@ -420,9 +457,9 @@ dependencies = [
[[package]]
name = "parking_lot_core"
version = "0.8.5"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
dependencies = [
"cfg-if",
"instant",
@ -471,15 +508,15 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proc-macro-hack"
version = "0.5.19"
version = "0.5.20+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro2"
version = "1.0.47"
version = "1.0.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
dependencies = [
"unicode-ident",
]
@ -499,9 +536,9 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.21"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
dependencies = [
"proc-macro2",
]
@ -546,23 +583,28 @@ dependencies = [
]
[[package]]
name = "remove_dir_all"
version = "0.5.3"
name = "rsds"
version = "0.1.0"
[[package]]
name = "rustix"
version = "0.36.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
checksum = "fd5c6ff11fecd55b40746d1995a02f2eb375bf8c00d192d521ee09f42bef37bc"
dependencies = [
"winapi",
"bitflags",
"errno",
"io-lifetimes",
"libc",
"linux-raw-sys",
"windows-sys 0.45.0",
]
[[package]]
name = "rsds"
version = "0.1.0"
[[package]]
name = "ryu"
version = "1.0.11"
version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
[[package]]
name = "scopeguard"
@ -572,18 +614,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "serde"
version = "1.0.147"
version = "1.0.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
checksum = "71f2b4817415c6d4210bfe1c7bfcf4801b2d904cb4d0e1a8fdb651013c9e86b8"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.147"
version = "1.0.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
checksum = "d071a94a3fac4aff69d023a7f411e33f40f3483f8c5190b1953822b6b76d7630"
dependencies = [
"proc-macro2",
"quote",
@ -592,9 +634,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.87"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
dependencies = [
"itoa",
"ryu",
@ -631,9 +673,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "syn"
version = "1.0.103"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
"quote",
@ -654,16 +696,15 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.3.0"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95"
dependencies = [
"cfg-if",
"fastrand",
"libc",
"redox_syscall",
"remove_dir_all",
"winapi",
"rustix",
"windows-sys 0.42.0",
]
[[package]]
@ -677,20 +718,21 @@ dependencies = [
[[package]]
name = "tokio"
version = "1.21.2"
version = "1.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099"
checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64"
dependencies = [
"autocfg",
"pin-project-lite",
"tokio-macros",
"windows-sys 0.45.0",
]
[[package]]
name = "tokio-macros"
version = "1.8.0"
version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
dependencies = [
"proc-macro2",
"quote",
@ -699,18 +741,18 @@ dependencies = [
[[package]]
name = "toml"
version = "0.5.9"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"serde",
]
[[package]]
name = "unicode-ident"
version = "1.0.5"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
[[package]]
name = "unicode-width"
@ -779,6 +821,87 @@ 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-sys"
version = "0.45.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
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.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "zeroize"
version = "1.5.7"
@ -790,9 +913,9 @@ dependencies = [
[[package]]
name = "zeroize_derive"
version = "1.3.2"
version = "1.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17"
checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c"
dependencies = [
"proc-macro2",
"quote",

@ -47,9 +47,9 @@ ExcludeArch: i686
Summary: 389 Directory Server (base)
Name: 389-ds-base
Version: 1.4.3.32
Release: %{?relprefix}3%{?prerel}%{?dist}
License: GPLv3+ and ASL 2.0 and MIT
Version: 1.4.3.34
Release: %{?relprefix}1%{?prerel}%{?dist}
License: GPLv3+ and (ASL 2.0 or MIT) and MIT and (Unlicense or MIT) and MPLv2.0 and BSD and (ASL 2.0 with exceptions or ASL 2.0 or MIT) and ASL 2.0 and (ASL 2.0 or Boost) and ((MIT or ASL 2.0) and Unicode-DFS-2016)
URL: https://www.port389.org
Group: System Environment/Daemons
Conflicts: selinux-policy-base < 3.9.8
@ -66,19 +66,21 @@ Provides: bundled(crate(base64)) = 0.13.1
Provides: bundled(crate(bitflags)) = 1.3.2
Provides: bundled(crate(byteorder)) = 1.4.3
Provides: bundled(crate(cbindgen)) = 0.9.1
Provides: bundled(crate(cc)) = 1.0.76
Provides: bundled(crate(cc)) = 1.0.79
Provides: bundled(crate(cfg-if)) = 1.0.0
Provides: bundled(crate(clap)) = 2.34.0
Provides: bundled(crate(concread)) = 0.2.21
Provides: bundled(crate(crossbeam)) = 0.8.2
Provides: bundled(crate(crossbeam-channel)) = 0.5.6
Provides: bundled(crate(crossbeam-deque)) = 0.8.2
Provides: bundled(crate(crossbeam-epoch)) = 0.9.11
Provides: bundled(crate(crossbeam-queue)) = 0.3.6
Provides: bundled(crate(crossbeam-utils)) = 0.8.12
Provides: bundled(crate(crossbeam-channel)) = 0.5.7
Provides: bundled(crate(crossbeam-deque)) = 0.8.3
Provides: bundled(crate(crossbeam-epoch)) = 0.9.14
Provides: bundled(crate(crossbeam-queue)) = 0.3.8
Provides: bundled(crate(crossbeam-utils)) = 0.8.15
Provides: bundled(crate(entryuuid)) = 0.1.0
Provides: bundled(crate(entryuuid_syntax)) = 0.1.0
Provides: bundled(crate(fastrand)) = 1.8.0
Provides: bundled(crate(errno)) = 0.2.8
Provides: bundled(crate(errno-dragonfly)) = 0.1.2
Provides: bundled(crate(fastrand)) = 1.9.0
Provides: bundled(crate(fernet)) = 0.1.4
Provides: bundled(crate(foreign-types)) = 0.3.2
Provides: bundled(crate(foreign-types-shared)) = 0.1.1
@ -86,53 +88,55 @@ Provides: bundled(crate(getrandom)) = 0.2.8
Provides: bundled(crate(hashbrown)) = 0.12.3
Provides: bundled(crate(hermit-abi)) = 0.1.19
Provides: bundled(crate(instant)) = 0.1.12
Provides: bundled(crate(itoa)) = 1.0.4
Provides: bundled(crate(jobserver)) = 0.1.25
Provides: bundled(crate(libc)) = 0.2.137
Provides: bundled(crate(io-lifetimes)) = 1.0.6
Provides: bundled(crate(itoa)) = 1.0.6
Provides: bundled(crate(jobserver)) = 0.1.26
Provides: bundled(crate(libc)) = 0.2.140
Provides: bundled(crate(librnsslapd)) = 0.1.0
Provides: bundled(crate(librslapd)) = 0.1.0
Provides: bundled(crate(linux-raw-sys)) = 0.1.4
Provides: bundled(crate(lock_api)) = 0.4.9
Provides: bundled(crate(log)) = 0.4.17
Provides: bundled(crate(lru)) = 0.7.8
Provides: bundled(crate(memoffset)) = 0.6.5
Provides: bundled(crate(once_cell)) = 1.16.0
Provides: bundled(crate(openssl)) = 0.10.42
Provides: bundled(crate(memoffset)) = 0.8.0
Provides: bundled(crate(once_cell)) = 1.17.1
Provides: bundled(crate(openssl)) = 0.10.45
Provides: bundled(crate(openssl-macros)) = 0.1.0
Provides: bundled(crate(openssl-sys)) = 0.9.77
Provides: bundled(crate(openssl-sys)) = 0.9.80
Provides: bundled(crate(parking_lot)) = 0.11.2
Provides: bundled(crate(parking_lot_core)) = 0.8.5
Provides: bundled(crate(parking_lot_core)) = 0.8.6
Provides: bundled(crate(paste)) = 0.1.18
Provides: bundled(crate(paste-impl)) = 0.1.18
Provides: bundled(crate(pin-project-lite)) = 0.2.9
Provides: bundled(crate(pkg-config)) = 0.3.26
Provides: bundled(crate(ppv-lite86)) = 0.2.17
Provides: bundled(crate(proc-macro-hack)) = 0.5.19
Provides: bundled(crate(proc-macro2)) = 1.0.47
Provides: bundled(crate(proc-macro-hack)) = 0.5.20+deprecated
Provides: bundled(crate(proc-macro2)) = 1.0.52
Provides: bundled(crate(pwdchan)) = 0.1.0
Provides: bundled(crate(quote)) = 1.0.21
Provides: bundled(crate(quote)) = 1.0.26
Provides: bundled(crate(rand)) = 0.8.5
Provides: bundled(crate(rand_chacha)) = 0.3.1
Provides: bundled(crate(rand_core)) = 0.6.4
Provides: bundled(crate(redox_syscall)) = 0.2.16
Provides: bundled(crate(remove_dir_all)) = 0.5.3
Provides: bundled(crate(rsds)) = 0.1.0
Provides: bundled(crate(ryu)) = 1.0.11
Provides: bundled(crate(rustix)) = 0.36.9
Provides: bundled(crate(ryu)) = 1.0.13
Provides: bundled(crate(scopeguard)) = 1.1.0
Provides: bundled(crate(serde)) = 1.0.147
Provides: bundled(crate(serde_derive)) = 1.0.147
Provides: bundled(crate(serde_json)) = 1.0.87
Provides: bundled(crate(serde)) = 1.0.155
Provides: bundled(crate(serde_derive)) = 1.0.155
Provides: bundled(crate(serde_json)) = 1.0.94
Provides: bundled(crate(slapd)) = 0.1.0
Provides: bundled(crate(slapi_r_plugin)) = 0.1.0
Provides: bundled(crate(smallvec)) = 1.10.0
Provides: bundled(crate(strsim)) = 0.8.0
Provides: bundled(crate(syn)) = 1.0.103
Provides: bundled(crate(syn)) = 1.0.109
Provides: bundled(crate(synstructure)) = 0.12.6
Provides: bundled(crate(tempfile)) = 3.3.0
Provides: bundled(crate(tempfile)) = 3.4.0
Provides: bundled(crate(textwrap)) = 0.11.0
Provides: bundled(crate(tokio)) = 1.21.2
Provides: bundled(crate(tokio-macros)) = 1.8.0
Provides: bundled(crate(toml)) = 0.5.9
Provides: bundled(crate(unicode-ident)) = 1.0.5
Provides: bundled(crate(tokio)) = 1.26.0
Provides: bundled(crate(tokio-macros)) = 1.8.2
Provides: bundled(crate(toml)) = 0.5.11
Provides: bundled(crate(unicode-ident)) = 1.0.8
Provides: bundled(crate(unicode-width)) = 0.1.10
Provides: bundled(crate(unicode-xid)) = 0.2.4
Provides: bundled(crate(uuid)) = 0.8.2
@ -143,8 +147,18 @@ Provides: bundled(crate(wasi)) = 0.11.0+wasi_snapshot_preview1
Provides: bundled(crate(winapi)) = 0.3.9
Provides: bundled(crate(winapi-i686-pc-windows-gnu)) = 0.4.0
Provides: bundled(crate(winapi-x86_64-pc-windows-gnu)) = 0.4.0
Provides: bundled(crate(windows-sys)) = 0.42.0
Provides: bundled(crate(windows-sys)) = 0.45.0
Provides: bundled(crate(windows-targets)) = 0.42.2
Provides: bundled(crate(windows_aarch64_gnullvm)) = 0.42.2
Provides: bundled(crate(windows_aarch64_msvc)) = 0.42.2
Provides: bundled(crate(windows_i686_gnu)) = 0.42.2
Provides: bundled(crate(windows_i686_msvc)) = 0.42.2
Provides: bundled(crate(windows_x86_64_gnu)) = 0.42.2
Provides: bundled(crate(windows_x86_64_gnullvm)) = 0.42.2
Provides: bundled(crate(windows_x86_64_msvc)) = 0.42.2
Provides: bundled(crate(zeroize)) = 1.5.7
Provides: bundled(crate(zeroize_derive)) = 1.3.2
Provides: bundled(crate(zeroize_derive)) = 1.3.3
##### Bundled cargo crates list - END #####
BuildRequires: nspr-devel >= 4.32
@ -208,6 +222,7 @@ BuildRequires: python%{python3_pkgversion}-argcomplete
BuildRequires: python%{python3_pkgversion}-argparse-manpage
BuildRequires: python%{python3_pkgversion}-policycoreutils
BuildRequires: python%{python3_pkgversion}-libselinux
BuildRequires: python%{python3_pkgversion}-cryptography
# For cockpit
BuildRequires: rsync
@ -269,15 +284,9 @@ Source2: %{name}-devel.README
Source3: https://github.com/jemalloc/%{jemalloc_name}/releases/download/%{jemalloc_ver}/%{jemalloc_name}-%{jemalloc_ver}.tar.bz2
%endif
%if %{use_rust}
Source4: vendor-%{version}-1.tar.gz
Source4: vendor-%{version}-2.tar.gz
Source5: Cargo.lock
%endif
Patch01: 0001-Issue-5532-Make-db-compaction-TOD-day-more-robust.patch
Patch02: 0002-Issue-5544-Increase-default-task-TTL.patch
Patch03: 0003-Issue-5413-Allow-mutliple-MemberOf-fixup-tasks-with-.patch
Patch04: 0004-Issue-5505-Fix-compiler-warning-5506.patch
Patch05: 0005-Issue-5565-Change-default-password-storage-scheme.patch
%description
389 Directory Server is an LDAPv3 compliant server. The base package includes
@ -388,6 +397,7 @@ Requires: python%{python3_pkgversion}-libselinux
Requires: python%{python3_pkgversion}-setuptools
Requires: python%{python3_pkgversion}-distro
%{?python_provide:%python_provide python%{python3_pkgversion}-lib389}
Requires: python%{python3_pkgversion}-cryptography
%description -n python%{python3_pkgversion}-lib389
This module contains tools and libraries for accessing, testing,
@ -898,22 +908,27 @@ exit 0
%doc README.md
%changelog
* Fri Dec 08 2023 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 1.4.3.32-3
* Fri Dec 08 2023 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 1.4.3.34-1
- Rebuilt for MSVSphere 8.8
* Tue Dec 13 2022 Mark Reynolds <mreynolds@redhat.com> - 1.4.3.32-3
- Bump version to 1.4.3.32-3
- Resolves: Bug 2149956 - change default password storage scheme to be backwards compatible with RHEL 7
* Tue Dec 13 2022 Mark Reynolds <mreynolds@redhat.com> - 1.4.3.32-2
- Bump version to 1.4.3.32-2
- Resolves: Bug 2149956 - ipa-server-install displays mdd failure Server is unwilling to perform
* Tue Nov 15 2022 Mark Reynolds <mreynolds@redhat.com> - 1.4.3.32-1
- Bump version to 1.4.3.32-1
- Resolves: Bug 2098138 - broken nsslapd-subtree-rename-switch option in rhds11
- Resolves: Bug 2119063 - entryuuid fixup tasks fails because entryUUID is not mutable
- Resolves: Bug 2136610 - [RFE] Add 'cn' attribute to IPA audit logs
- Resolves: Bug 2142638 - pam mutex lock causing high etimes, affecting red hat internal sso
- Resolves: Bug 2096795 - [RFE] Support ECDSA private keys for TLS
* Mon Mar 13 2023 Mark Reynolds <mreynolds@rehdat.com> - 1.4.3.34-1
- Bump version to 1.4.3.34-1
- Resolves: Bug 2177234 - pam mutex lock causing high etimes, affecting red hat internal sso
* Thu Aug 18 2022 Mark Reynolds <mreynolds@redhat.com> - 1.4.3.30-6
- Bump version to 1.4.3.30-6
- Resolves: Bug 2113002 - ipa-replica-manage --connect --winsync fails with traceback
- Resolves: Bug 2118763 - SIGSEGV in sync_repl
* Mon Aug 8 2022 Mark Reynolds <mreynolds@redhat.com> - 1.4.3.20-5
- Bump version to 1.4.3.30-5
- Resolves: Bug 2113002 - ipa-replica-manage --connect --winsync fails with traceback
* Thu Jul 28 2022 Thierry Bordaz <tbordaz@redhat.com> - 1.4.3.30-4
- Bump version to 1.4.3.30-4
- Resolves: Bug 2085562 - Rebase 389-ds-base in 8.7
* Fri Jun 10 2022 Thierry Bordaz <tbordaz@redhat.com> - 1.4.3.30-3
- Bump version to 1.4.3.30-3
- Resolves: Bug 2085562 - Rebase 389-ds-base in 8.7

Loading…
Cancel
Save