Wednesday, September 5, 2018

[389-commits] [389-ds-base] 01/01: Ticket 49937 - Log buffer exceeded emergency logging msg is not thread-safe

This is an automated email from the git hooks/post-receive script.

mreynolds pushed a commit to branch 389-ds-base-1.3.7
in repository 389-ds-base.

commit 9f28620d2a2967178ae1e7dd6de4da862565700a
Author: Mark Reynolds <mreynolds@redhat.com>
Date: Wed Sep 5 14:09:21 2018 -0400

Ticket 49937 - Log buffer exceeded emergency logging msg is not thread-safe

Bug Description: Multiple operations making modificatiosn on a DN
that is very large can crash the server, because
when we do emergency logging, we close and reopen
the errors log withgout hold the error log write
lock. This causes the FD pointer to be become
invalid and triggers a crash.

Fix description: Hold the errors log write lock while closing and
reopening the log

https://pagure.io/389-ds-base/issue/49937

Reviewed by: vashirov(Thanks!)

(cherry picked from commit 8ff8cb850be8a93f75aa3007ee2131c026f4962b)
---
ldap/servers/slapd/log.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/ldap/servers/slapd/log.c b/ldap/servers/slapd/log.c
index 998efae..90ce6ac 100644
--- a/ldap/servers/slapd/log.c
+++ b/ldap/servers/slapd/log.c
@@ -2231,11 +2231,11 @@ vslapd_log_emergency_error(LOGFD fp, const char *msg, int locked)
if (logging_hr_timestamps_enabled == 1) {
struct timespec tsnow;
if (clock_gettime(CLOCK_REALTIME, &tsnow) != 0) {
- syslog(LOG_EMERG, "vslapd_log_emergency_error, Unable to determine system time for message :: %s", msg);
+ syslog(LOG_EMERG, "vslapd_log_emergency_error, Unable to determine system time for message :: %s\n", msg);
return;
}
if (format_localTime_hr_log(tsnow.tv_sec, tsnow.tv_nsec, sizeof(tbuf), tbuf, &size) != 0) {
- syslog(LOG_EMERG, "vslapd_log_emergency_error, Unable to format system time for message :: %s", msg);
+ syslog(LOG_EMERG, "vslapd_log_emergency_error, Unable to format system time for message :: %s\n", msg);
return;
}
} else {
@@ -2243,14 +2243,14 @@ vslapd_log_emergency_error(LOGFD fp, const char *msg, int locked)
time_t tnl;
tnl = slapi_current_utc_time();
if (format_localTime_log(tnl, sizeof(tbuf), tbuf, &size) != 0) {
- syslog(LOG_EMERG, "vslapd_log_emergency_error, Unable to format system time for message :: %s", msg);
+ syslog(LOG_EMERG, "vslapd_log_emergency_error, Unable to format system time for message :: %s\n", msg);
return;
}
#ifdef HAVE_CLOCK_GETTIME
}

No comments:

Post a Comment