summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ldap/servers/slapd/config.c18
-rw-r--r--ldap/servers/slapd/log.c370
-rw-r--r--ldap/servers/slapd/log.h7
-rw-r--r--ldap/servers/slapd/main.c32
-rw-r--r--ldap/servers/slapd/proto-slap.h1
-rw-r--r--ldap/servers/slapd/util.c27
-rw-r--r--ldapserver.spec.tmpl6
7 files changed, 81 insertions, 380 deletions
diff --git a/ldap/servers/slapd/config.c b/ldap/servers/slapd/config.c
index ed012c2a..bc2fd50c 100644
--- a/ldap/servers/slapd/config.c
+++ b/ldap/servers/slapd/config.c
@@ -222,14 +222,12 @@ slapd_bootstrap_config(const char *configdir)
char loglevel[BUFSIZ];
char maxdescriptors[BUFSIZ];
char val[BUFSIZ];
- char _localuser[BUFSIZ];
char logenabled[BUFSIZ];
char schemacheck[BUFSIZ];
Slapi_DN plug_dn;
errorlog[0] = loglevel[0] = maxdescriptors[0] = '\0';
val[0] = logenabled[0] = schemacheck[0] = '\0';
- _localuser[0] = '\0';
/* Convert LDIF to entry structures */
slapi_sdn_init_dn_byref(&plug_dn, PLUGIN_BASE_DN);
@@ -285,21 +283,6 @@ slapd_bootstrap_config(const char *configdir)
}
}
-#ifndef _WIN32
- /* set the local user name; needed to set up error log */
- if (!_localuser[0] &&
- entry_has_attr_and_value(e, CONFIG_LOCALUSER_ATTRIBUTE,
- _localuser, sizeof(_localuser)))
- {
- if (config_set_localuser(CONFIG_LOCALUSER_ATTRIBUTE,
- _localuser, errorbuf, CONFIG_APPLY) != LDAP_SUCCESS)
- {
- LDAPDebug(LDAP_DEBUG_ANY, "%s: %s: %s. \n", configfile,
- CONFIG_LOCALUSER_ATTRIBUTE, errorbuf);
- }
- }
-#endif
-
/* set the log file name */
if (!errorlog[0] &&
entry_has_attr_and_value(e, CONFIG_ERRORLOG_ATTRIBUTE,
@@ -312,6 +295,7 @@ slapd_bootstrap_config(const char *configdir)
CONFIG_ERRORLOG_ATTRIBUTE, errorbuf);
}
}
+
/* set the error log level */
if (!loglevel[0] &&
entry_has_attr_and_value(e, CONFIG_LOGLEVEL_ATTRIBUTE,
diff --git a/ldap/servers/slapd/log.c b/ldap/servers/slapd/log.c
index effeae75..e880f86f 100644
--- a/ldap/servers/slapd/log.c
+++ b/ldap/servers/slapd/log.c
@@ -48,7 +48,6 @@
#include "log.h"
#include "fe.h"
-#include <pwd.h> /* getpwnam */
#if defined( XP_WIN32 )
#include <fcntl.h>
@@ -56,9 +55,6 @@
#include "proto-ntutil.h"
extern HANDLE hSlapdEventSource;
extern LPTSTR pszServerName;
-#define _PSEP '\\'
-#else
-#define _PSEP '/'
#endif
/**************************************************************************
* GLOBALS, defines, and ...
@@ -115,14 +111,12 @@ static int log__access_rotationinfof(char *pathname);
static int log__error_rotationinfof(char *pathname);
static int log__audit_rotationinfof(char *pathname);
static int log__extract_logheader (FILE *fp, long *f_ctime, int *f_size);
-static int log__check_prevlogs (FILE *fp, char *filename);
static int log__getfilesize(LOGFD fp);
static int log__enough_freespace(char *path);
static int vslapd_log_error(LOGFD fp, char *subsystem, char *fmt, va_list ap );
static int vslapd_log_access(char *fmt, va_list ap );
static void log_convert_time (time_t ctime, char *tbuf, int type);
-static time_t log_reverse_convert_time (char *tbuf);
static LogBufferInfo *log_create_buffer(size_t sz);
static void log_append_buffer2(time_t tnl, LogBufferInfo *lbi, char *msg1, size_t size1, char *msg2, size_t size2);
static void log_flush_buffer(LogBufferInfo *lbi, int type, int sync_now);
@@ -2131,8 +2125,8 @@ log__open_accesslogfile(int logfile_state, int locked)
logp = loginfo.log_access_logchain;
while ( logp) {
log_convert_time (logp->l_ctime, tbuf, 1 /*short*/);
- PR_snprintf(buffer, sizeof(buffer), "LOGINFO:%s%s.%s (%lu) (%u)\n",
- PREVLOGFILE, loginfo.log_access_file, tbuf, logp->l_ctime, logp->l_size);
+ PR_snprintf(buffer, sizeof(buffer), "LOGINFO:Previous Log File:%s.%s (%lu) (%u)\n",
+ loginfo.log_access_file, tbuf, logp->l_ctime, logp->l_size);
LOG_WRITE(fpinfo, buffer, strlen(buffer), 0);
logp = logp->l_next;
}
@@ -2432,130 +2426,6 @@ delete_logfile:
return 1;
}
-
-#define ERRORSLOG 1
-#define ACCESSLOG 2
-#define AUDITLOG 3
-
-static int
-log__fix_rotationinfof(char *pathname)
-{
- char *logsdir = NULL;
- time_t now;
- PRDir *dirptr = NULL;
- PRDirEntry *dirent = NULL;
- PRDirFlags dirflags = PR_SKIP_BOTH & PR_SKIP_HIDDEN;
- char *log_type = NULL;
- int log_type_id;
- int rval = LOG_ERROR;
- char *p;
-
- /* rotation info file is broken; can't trust the contents */
- time (&now);
- loginfo.log_error_ctime = now;
- logsdir = slapi_ch_strdup(pathname);
- p = strrchr(logsdir, _PSEP);
- if (NULL == p) /* pathname is not path/filename.rotationinfo; do nothing */
- goto done;
-
- *p = '\0';
- log_type = ++p;
- p = strchr(log_type, '.');
- if (NULL == p) /* file is not rotationinfo; do nothing */
- goto done;
- *p = '\0';
-
- if (0 == strcmp(log_type, "errors"))
- log_type_id = ERRORSLOG;
- else if (0 == strcmp(log_type, "access"))
- log_type_id = ACCESSLOG;
- else if (0 == strcmp(log_type, "audit"))
- log_type_id = AUDITLOG;
- else
- goto done; /* file is not errors nor access nor audit; do nothing */
-
- if (!(dirptr = PR_OpenDir(logsdir)))
- goto done;
-
- switch (log_type_id) {
- case ERRORSLOG:
- loginfo.log_numof_error_logs = 0;
- loginfo.log_error_logchain = NULL;
- break;
- case ACCESSLOG:
- loginfo.log_numof_access_logs = 0;
- loginfo.log_access_logchain = NULL;
- break;
- case AUDITLOG:
- loginfo.log_numof_audit_logs = 0;
- loginfo.log_audit_logchain = NULL;
- break;
- }
- /* read the directory entries into a linked list */
- for (dirent = PR_ReadDir(dirptr, dirflags); dirent ;
- dirent = PR_ReadDir(dirptr, dirflags)) {
- if (0 == strcmp(log_type, dirent->name)) {
- switch (log_type_id) {
- case ERRORSLOG:
- loginfo.log_numof_error_logs++;
- break;
- case ACCESSLOG:
- loginfo.log_numof_access_logs++;
- break;
- case AUDITLOG:
- loginfo.log_numof_audit_logs++;
- break;
- }
- } else if (0 == strncmp(log_type, dirent->name, strlen(log_type)) &&
- (p = strrchr(dirent->name, '.')) != NULL &&
- 15 == strlen(++p) &&
- NULL != strchr(p, '-')) { /* e.g., errors.20051123-165135 */
- struct logfileinfo *logp;
- char *q;
- int ignoreit = 0;
-
- for (q = p; q && *q; q++) {
- if (*q != '-' && !isdigit(*q))
- ignoreit = 1;
- }
- if (ignoreit)
- continue;
-
- logp = (struct logfileinfo *) slapi_ch_malloc (sizeof (struct logfileinfo));
- logp->l_ctime = log_reverse_convert_time(p);
- switch (log_type_id) {
- case ERRORSLOG:
- logp->l_size = loginfo.log_error_maxlogsize; /* dummy */
- logp->l_next = loginfo.log_error_logchain;
- loginfo.log_error_logchain = logp;
- loginfo.log_numof_error_logs++;
- break;
- case ACCESSLOG:
- logp->l_size = loginfo.log_access_maxlogsize;
- logp->l_next = loginfo.log_access_logchain;
- loginfo.log_access_logchain = logp;
- loginfo.log_numof_access_logs++;
- break;
- case AUDITLOG:
- logp->l_size =loginfo.log_audit_maxlogsize;
- logp->l_next = loginfo.log_audit_logchain;
- loginfo.log_audit_logchain = logp;
- loginfo.log_numof_audit_logs++;
- break;
- }
- }
- }
- rval = LOG_SUCCESS;
-done:
- if (NULL != dirptr)
- PR_CloseDir(dirptr);
- slapi_ch_free_string(&logsdir);
- return rval;
-}
-#undef ERRORSLOG
-#undef ACCESSLOG
-#undef AUDITLOG
-
/******************************************************************************
* log__access_rotationinfof
*
@@ -2565,14 +2435,14 @@ done:
* Assumption: Lock has been acquired already
******************************************************************************/
static int
-log__access_rotationinfof(char *pathname)
+log__access_rotationinfof( char *pathname)
{
- long f_ctime;
+ long f_ctime;
int f_size;
int main_log = 1;
- time_t now;
- FILE *fp;
- int rval, logfile_type = LOGFILE_REOPENED;
+ time_t now;
+ FILE *fp;
+
/*
** Okay -- I confess, we want to use NSPR calls but I want to
@@ -2591,7 +2461,7 @@ log__access_rotationinfof(char *pathname)
** We have reopened the log access file. Now we need to read the
** log file info and update the values.
*/
- while ((rval = log__extract_logheader(fp, &f_ctime, &f_size)) == LOG_CONTINUE) {
+ while (log__extract_logheader(fp, &f_ctime, &f_size) == LOG_CONTINUE) {
/* first we would get the main log info */
if (f_ctime == 0 && f_size == 0)
continue;
@@ -2608,15 +2478,15 @@ log__access_rotationinfof(char *pathname)
struct logfileinfo *logp;
logp = (struct logfileinfo *) slapi_ch_malloc (sizeof (struct logfileinfo));
- if (f_ctime > 0L)
+ if (f_ctime > 0L)
logp->l_ctime = f_ctime;
else
logp->l_ctime = now;
if (f_size > 0)
- logp->l_size = f_size;
+ logp->l_size = f_size;
else {
/* make it the max log size */
- logp->l_size = loginfo.log_access_maxlogsize;
+ logp->l_size = loginfo.log_access_maxlogsize;
}
logp->l_next = loginfo.log_access_logchain;
@@ -2624,13 +2494,6 @@ log__access_rotationinfof(char *pathname)
}
loginfo.log_numof_access_logs++;
}
- if (LOG_DONE == rval)
- rval = log__check_prevlogs(fp, pathname);
- fclose (fp);
-
- if (LOG_ERROR == rval)
- if (LOG_SUCCESS == log__fix_rotationinfof(pathname))
- logfile_type = LOGFILE_NEW;
/* Check if there is a rotation overdue */
if (loginfo.log_access_rotationsync_enabled &&
@@ -2639,79 +2502,8 @@ log__access_rotationinfof(char *pathname)
loginfo.log_access_ctime < loginfo.log_access_rotationsyncclock - loginfo.log_access_rotationtime_secs) {
loginfo.log_access_rotationsyncclock -= loginfo.log_access_rotationtime_secs;
}
- return logfile_type;
-}
-
-/*
-* log__check_prevlogs
-*
-* check if a given prev log file (e.g., /opt/fedora-ds/slapd-fe/logs/errors.20051201-101347)
-* is found in the rotationinfo file.
-*/
-static int
-log__check_prevlogs (FILE *fp, char *pathname)
-{
- char buf[BUFSIZ], *p;
- char *logsdir = NULL;
- int rval = LOG_CONTINUE;
- char *log_type = NULL;
- PRDir *dirptr = NULL;
- PRDirEntry *dirent = NULL;
- PRDirFlags dirflags = PR_SKIP_BOTH & PR_SKIP_HIDDEN;
-
- logsdir = slapi_ch_strdup(pathname);
- p = strrchr(logsdir, _PSEP);
- if (NULL == p) /* pathname is not path/filename.rotationinfo; do nothing */
- goto done;
-
- *p = '\0';
- log_type = ++p;
- p = strchr(log_type, '.');
- if (NULL == p) /* file is not rotationinfo; do nothing */
- goto done;
- *p = '\0';
-
- if (0 != strcmp(log_type, "errors") &&
- 0 != strcmp(log_type, "access") &&
- 0 != strcmp(log_type, "audit"))
- goto done; /* file is not errors nor access nor audit; do nothing */
-
- if (!(dirptr = PR_OpenDir(logsdir)))
- goto done;
-
- for (dirent = PR_ReadDir(dirptr, dirflags); dirent ;
- dirent = PR_ReadDir(dirptr, dirflags)) {
- if (0 == strncmp(log_type, dirent->name, strlen(log_type)) &&
- (p = strrchr(dirent->name, '.')) != NULL &&
- 15 == strlen(++p) &&
- NULL != strchr(p, '-')) { /* e.g., errors.20051123-165135 */
- char *q;
- int ignoreit = 0;
-
- for (q = p; q && *q; q++) {
- if (*q != '-' && !isdigit(*q))
- ignoreit = 1;
- }
- if (ignoreit)
- continue;
-
- fseek(fp, 0 ,SEEK_SET);
- buf[BUFSIZ-1] = '\0';
- while (fgets(buf, BUFSIZ - 1, fp)) {
- if (strstr(buf, dirent->name)) {
- rval = LOG_CONTINUE; /* found in .rotationinfo */
- continue;
- }
- }
- rval = LOG_ERROR; /* not found in .rotationinfo */
- break;
- }
- }
-done:
- if (NULL != dirptr)
- PR_CloseDir(dirptr);
- slapi_ch_free_string(&logsdir);
- return rval;
+ fclose (fp);
+ return LOGFILE_REOPENED;
}
/******************************************************************************
@@ -2733,9 +2525,8 @@ log__extract_logheader (FILE *fp, long *f_ctime, int *f_size)
if ( fp == NULL)
return LOG_ERROR;
- buf[BUFSIZ-1] = '\0'; /* for safety */
- if (fgets(buf, BUFSIZ - 1, fp) == NULL) {
- return LOG_DONE;
+ if (fgets(buf, BUFSIZ, fp) == NULL) {
+ return LOG_ERROR;
}
if ((p=strstr(buf, "LOGINFO")) == NULL) {
@@ -2774,23 +2565,6 @@ log__extract_logheader (FILE *fp, long *f_ctime, int *f_size)
/* Now p must hold the size value */
*f_size = atoi(p);
- /* check if the Previous Log file really exists */
- if ((p = strstr(buf, PREVLOGFILE)) != NULL) {
- p += strlen(PREVLOGFILE);
- s = strchr(p, ' ');
- if (NULL == s) {
- s = strchr(p, '(');
- if (NULL != s) {
- *s = '\0';
- }
- } else {
- *s = '\0';
- }
- if (PR_SUCCESS != PR_Access(p, PR_ACCESS_EXISTS)) {
- return LOG_ERROR;
- }
- }
-
return LOG_CONTINUE;
}
@@ -2942,17 +2716,13 @@ log_get_loglist(int logtype)
default:
return NULL;
}
- list = (char **) slapi_ch_calloc(1, (num + 1) * sizeof(char *));
+ list = (char **) slapi_ch_calloc(1, num * sizeof(char *));
i = 0;
while (logp) {
log_convert_time (logp->l_ctime, tbuf, 1 /*short */);
PR_snprintf(buf, sizeof(buf), "%s.%s", file, tbuf);
list[i] = slapi_ch_strdup(buf);
i++;
- if (i == num) { /* mismatch b/w num and logchain;
- cut the chain and save the process */
- break;
- }
logp = logp->l_next;
}
list[i] = NULL;
@@ -3288,12 +3058,12 @@ delete_logfile:
static int
log__error_rotationinfof( char *pathname)
{
- long f_ctime;
+ long f_ctime;
int f_size;
int main_log = 1;
- time_t now;
- FILE *fp;
- int rval, logfile_type = LOGFILE_REOPENED;
+ time_t now;
+ FILE *fp;
+
/*
** Okay -- I confess, we want to use NSPR calls but I want to
@@ -3312,7 +3082,7 @@ log__error_rotationinfof( char *pathname)
** We have reopened the log error file. Now we need to read the
** log file info and update the values.
*/
- while ((rval = log__extract_logheader(fp, &f_ctime, &f_size)) == LOG_CONTINUE) {
+ while (log__extract_logheader(fp, &f_ctime, &f_size) == LOG_CONTINUE) {
/* first we would get the main log info */
if (f_ctime == 0 && f_size == 0)
continue;
@@ -3329,15 +3099,15 @@ log__error_rotationinfof( char *pathname)
struct logfileinfo *logp;
logp = (struct logfileinfo *) slapi_ch_malloc (sizeof (struct logfileinfo));
- if (f_ctime > 0L)
+ if (f_ctime > 0L)
logp->l_ctime = f_ctime;
else
logp->l_ctime = now;
if (f_size > 0)
- logp->l_size = f_size;
+ logp->l_size = f_size;
else {
/* make it the max log size */
- logp->l_size = loginfo.log_error_maxlogsize;
+ logp->l_size = loginfo.log_error_maxlogsize;
}
logp->l_next = loginfo.log_error_logchain;
@@ -3345,13 +3115,6 @@ log__error_rotationinfof( char *pathname)
}
loginfo.log_numof_error_logs++;
}
- if (LOG_DONE == rval)
- rval = log__check_prevlogs(fp, pathname);
- fclose (fp);
-
- if (LOG_ERROR == rval)
- if (LOG_SUCCESS == log__fix_rotationinfof(pathname))
- logfile_type = LOGFILE_NEW;
/* Check if there is a rotation overdue */
if (loginfo.log_error_rotationsync_enabled &&
@@ -3361,7 +3124,8 @@ log__error_rotationinfof( char *pathname)
loginfo.log_error_rotationsyncclock -= loginfo.log_error_rotationtime_secs;
}
- return logfile_type;
+ fclose (fp);
+ return LOGFILE_REOPENED;
}
/******************************************************************************
@@ -3375,12 +3139,12 @@ log__error_rotationinfof( char *pathname)
static int
log__audit_rotationinfof( char *pathname)
{
- long f_ctime;
+ long f_ctime;
int f_size;
int main_log = 1;
- time_t now;
- FILE *fp;
- int rval, logfile_type = LOGFILE_REOPENED;
+ time_t now;
+ FILE *fp;
+
/*
** Okay -- I confess, we want to use NSPR calls but I want to
@@ -3399,7 +3163,7 @@ log__audit_rotationinfof( char *pathname)
** We have reopened the log audit file. Now we need to read the
** log file info and update the values.
*/
- while ((rval = log__extract_logheader(fp, &f_ctime, &f_size)) == LOG_CONTINUE) {
+ while (log__extract_logheader(fp, &f_ctime, &f_size) == LOG_CONTINUE) {
/* first we would get the main log info */
if (f_ctime == 0 && f_size == 0)
continue;
@@ -3416,15 +3180,15 @@ log__audit_rotationinfof( char *pathname)
struct logfileinfo *logp;
logp = (struct logfileinfo *) slapi_ch_malloc (sizeof (struct logfileinfo));
- if (f_ctime > 0L)
+ if (f_ctime > 0L)
logp->l_ctime = f_ctime;
else
logp->l_ctime = now;
if (f_size > 0)
- logp->l_size = f_size;
+ logp->l_size = f_size;
else {
/* make it the max log size */
- logp->l_size = loginfo.log_audit_maxlogsize;
+ logp->l_size = loginfo.log_audit_maxlogsize;
}
logp->l_next = loginfo.log_audit_logchain;
@@ -3432,13 +3196,6 @@ log__audit_rotationinfof( char *pathname)
}
loginfo.log_numof_audit_logs++;
}
- if (LOG_DONE == rval)
- rval = log__check_prevlogs(fp, pathname);
- fclose (fp);
-
- if (LOG_ERROR == rval)
- if (LOG_SUCCESS == log__fix_rotationinfof(pathname))
- logfile_type = LOGFILE_NEW;
/* Check if there is a rotation overdue */
if (loginfo.log_audit_rotationsync_enabled &&
@@ -3448,7 +3205,8 @@ log__audit_rotationinfof( char *pathname)
loginfo.log_audit_rotationsyncclock -= loginfo.log_audit_rotationtime_secs;
}
- return logfile_type;
+ fclose (fp);
+ return LOGFILE_REOPENED;
}
/******************************************************************************
@@ -3467,17 +3225,6 @@ log__open_errorlogfile(int logfile_state, int locked)
char tbuf[TBUFSIZE];
struct logfileinfo *logp;
char buffer[BUFSIZ];
- struct passwd *pw = NULL;
-
- slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig();
-
- if ( slapdFrontendConfig->localuser != NULL ) {
- if ( (pw = getpwnam( slapdFrontendConfig->localuser )) == NULL )
- return LOG_UNABLE_TO_OPENFILE;
- }
- else {
- return LOG_UNABLE_TO_OPENFILE;
- }
if (!locked) LOG_ERROR_LOCK_WRITE( );
@@ -3540,12 +3287,6 @@ log__open_errorlogfile(int logfile_state, int locked)
return LOG_UNABLE_TO_OPENFILE;
}
- /* make sure the logfile is owned by the localuser. If one of the
- * alternate ns-slapd modes, such as db2bak, tries to log an error
- * at startup, it will create the logfile as root!
- */
- slapd_chown_if_not_owner(loginfo.log_error_file, pw->pw_uid, -1);
-
loginfo.log_error_fdes = fp;
if (logfile_state == LOGFILE_REOPENED) {
/* we have all the information */
@@ -3572,8 +3313,8 @@ log__open_errorlogfile(int logfile_state, int locked)
logp = loginfo.log_error_logchain;
while ( logp) {
log_convert_time (logp->l_ctime, tbuf, 1 /*short */);
- PR_snprintf(buffer, sizeof(buffer), "LOGINFO:%s%s.%s (%lu) (%u)\n",
- PREVLOGFILE, loginfo.log_error_file, tbuf, logp->l_ctime, logp->l_size);
+ PR_snprintf(buffer, sizeof(buffer), "LOGINFO:Previous Log File:%s.%s (%lu) (%u)\n",
+ loginfo.log_error_file, tbuf, logp->l_ctime, logp->l_size);
LOG_WRITE(fpinfo, buffer, strlen(buffer), 0);
logp = logp->l_next;
}
@@ -3693,8 +3434,8 @@ log__open_auditlogfile(int logfile_state, int locked)
logp = loginfo.log_audit_logchain;
while ( logp) {
log_convert_time (logp->l_ctime, tbuf, 1 /*short */);
- PR_snprintf(buffer, sizeof(buffer), "LOGINFO:%s%s.%s (%d) (%d)\n",
- PREVLOGFILE, loginfo.log_audit_file, tbuf, (int)logp->l_ctime, logp->l_size);
+ PR_snprintf(buffer, sizeof(buffer), "LOGINFO:Previous Log File:%s.%s (%d) (%d)\n",
+ loginfo.log_audit_file, tbuf, (int)logp->l_ctime, logp->l_size);
LOG_WRITE(fpinfo, buffer, strlen(buffer), 0);
logp = logp->l_next;
}
@@ -3865,14 +3606,15 @@ void log_access_flush()
static void
log_convert_time (time_t ctime, char *tbuf, int type)
{
+
struct tm *tmsp, tms;
#ifdef _WIN32
- {
- struct tm *pt = localtime( &ctime );
- tmsp = &tms;
- memcpy(&tms, pt, sizeof(struct tm) );
- }
+ {
+ struct tm *pt = localtime( &ctime );
+ tmsp = &tms;
+ memcpy(&tms, pt, sizeof(struct tm) );
+ }
#else
(void)localtime_r( &ctime, &tms );
tmsp = &tms;
@@ -3881,27 +3623,7 @@ log_convert_time (time_t ctime, char *tbuf, int type)
(void) strftime (tbuf, (size_t) TBUFSIZE, "%Y%m%d-%H%M%S",tmsp);
else /* wants the long form */
(void) strftime (tbuf, (size_t) TBUFSIZE, "%d/%b/%Y:%H:%M:%S",tmsp);
-}
-
-/*
- * log_reverse_convert_time
- * convert the given string formatted time (output from log_convert_time)
- * into time_t
- */
-static time_t
-log_reverse_convert_time(char *tbuf)
-{
- struct tm tm;
-
- if (strchr(tbuf, '-')) { /* short format */
- strptime(tbuf, "%Y%m%d-%H%M%S", &tm);
- } else if (strchr(tbuf, '/') && strchr(tbuf, ':')) { /* long format */
- strptime(tbuf, "%d/%b/%Y:%H:%M:%S", &tm);
- } else {
- return 0;
- }
- return mktime(&tm);
}
int
diff --git a/ldap/servers/slapd/log.h b/ldap/servers/slapd/log.h
index 24ec4ab1..5082184e 100644
--- a/ldap/servers/slapd/log.h
+++ b/ldap/servers/slapd/log.h
@@ -43,10 +43,6 @@
*
*************************************************************************/
#include <stdio.h>
-#ifdef LINUX
-#define _XOPEN_SOURCE /* glibc2 needs this */
-#define __USE_XOPEN
-#endif
#include <time.h>
#include <stdarg.h>
#include <sys/types.h>
@@ -73,7 +69,6 @@
#define LOG_EXCEEDED 2 /*err: > max logs allowed */
#define LOG_ROTATE 3 /*ok; go to the next log */
#define LOG_UNABLE_TO_OPENFILE 4
-#define LOG_DONE 5
#define LOG_UNIT_UNKNOWN 0
#define LOG_UNIT_MONTHS 1
@@ -96,8 +91,6 @@
#define LOG_BUFFER_MAXSIZE 512 * 1024
-#define PREVLOGFILE "Previous Log File:"
-
/* see log.c for why this is done */
#ifdef XP_WIN32
typedef FILE *LOGFD;
diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index e09f8862..dbe72b39 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -207,6 +207,32 @@ extern void collation_init();
#ifndef WIN32
+/* Changes the ownership of the given file/directory iff not
+ already the owner
+ Returns 0 upon success or non-zero otherwise, usually -1 if
+ some system error occurred
+*/
+static int
+chown_if_not_owner(const char *filename, uid_t uid, gid_t gid)
+{
+ struct stat statbuf;
+ int result = 1;
+ if (!filename)
+ return result;
+
+ memset(&statbuf, '\0', sizeof(statbuf));
+ if (!(result = stat(filename, &statbuf)))
+ {
+ if (((uid != -1) && (uid != statbuf.st_uid)) ||
+ ((gid != -1) && (gid != statbuf.st_gid)))
+ {
+ result = chown(filename, uid, gid);
+ }
+ }
+
+ return result;
+}
+
/*
Four cases:
- change ownership of all files in directory (strip_fn=PR_FALSE)
@@ -232,7 +258,7 @@ chown_dir_files(char *name, struct passwd *pw, PRBool strip_fn)
if((ptr=strrchr(log,'/'))==NULL)
{
LDAPDebug(LDAP_DEBUG_ANY, "Caution changing ownership of ./%s \n",name,0,0);
- slapd_chown_if_not_owner(log, pw->pw_uid, -1 );
+ chown_if_not_owner(log, pw->pw_uid, -1 );
rc=1;
} else if(log==ptr) {
LDAPDebug(LDAP_DEBUG_ANY, "Caution changing ownership of / directory and its contents to %s\n",pw->pw_name,0,0);
@@ -247,7 +273,7 @@ chown_dir_files(char *name, struct passwd *pw, PRBool strip_fn)
while( (entry = PR_ReadDir(dir , PR_SKIP_BOTH )) !=NULL )
{
PR_snprintf(file,MAXPATHLEN+1,"%s/%s",log,entry->name);
- slapd_chown_if_not_owner( file, pw->pw_uid, -1 );
+ chown_if_not_owner( file, pw->pw_uid, -1 );
}
PR_CloseDir( dir );
}
@@ -276,7 +302,7 @@ fix_ownership()
}
/* The instance directory needs to be owned by the local user */
- slapd_chown_if_not_owner( slapdFrontendConfig->instancedir, pw->pw_uid, -1 );
+ chown_if_not_owner( slapdFrontendConfig->instancedir, pw->pw_uid, -1 );
PR_snprintf(dirname,sizeof(dirname),"%s/config",slapdFrontendConfig->instancedir);
chown_dir_files(dirname, pw, PR_FALSE); /* config directory */
chown_dir_files(slapdFrontendConfig->accesslog, pw, PR_TRUE); /* do access log directory */
diff --git a/ldap/servers/slapd/proto-slap.h b/ldap/servers/slapd/proto-slap.h
index d1fdd406..a40dd3cd 100644
--- a/ldap/servers/slapd/proto-slap.h
+++ b/ldap/servers/slapd/proto-slap.h
@@ -588,7 +588,6 @@ void g_set_accesslog_level(int val);
*/
void slapd_nasty(char* str, int c, int err);
int strarray2str( char **a, char *buf, size_t buflen, int include_quotes );
-int slapd_chown_if_not_owner(const char *filename, uid_t uid, gid_t gid);
/*
* modify.c
diff --git a/ldap/servers/slapd/util.c b/ldap/servers/slapd/util.c
index a129c6cc..ec675709 100644
--- a/ldap/servers/slapd/util.c
+++ b/ldap/servers/slapd/util.c
@@ -631,30 +631,3 @@ strarray2str( char **a, char *buf, size_t buflen, int include_quotes )
return( rc );
}
/*****************************************************************************/
-
-/* Changes the ownership of the given file/directory if not
- already the owner
- Returns 0 upon success or non-zero otherwise, usually -1 if
- some system error occurred
-*/
-int
-slapd_chown_if_not_owner(const char *filename, uid_t uid, gid_t gid)
-{
- struct stat statbuf;
- int result = 1;
- if (!filename)
- return result;
-
- memset(&statbuf, '\0', sizeof(statbuf));
- if (!(result = stat(filename, &statbuf)))
- {
- if (((uid != -1) && (uid != statbuf.st_uid)) ||
- ((gid != -1) && (gid != statbuf.st_gid)))
- {
- result = chown(filename, uid, gid);
- }
- }
-
- return result;
-}
-
diff --git a/ldapserver.spec.tmpl b/ldapserver.spec.tmpl
index 3ab788d1..d64c825b 100644
--- a/ldapserver.spec.tmpl
+++ b/ldapserver.spec.tmpl
@@ -122,7 +122,11 @@ echo ""
if [ -z "$RPM_INSTALL_PREFIX" ]; then
RPM_INSTALL_PREFIX=%{prefix}
fi
-if [ "$1" -ge 1 ] ; then
+# patch file to fix startconsole ld libpath
+if [ -f $RPM_INSTALL_PREFIX/setup/console-ld-libpath.patch ] ; then
+ patch -d $RPM_INSTALL_PREFIX -p0 < $RPM_INSTALL_PREFIX/setup/console-ld-libpath.patch
+fi
+if [ "$1" -gt 1 ] ; then
# patch file to upgrade admin server from 1.0 to 1.0.1
if [ -f $RPM_INSTALL_PREFIX/setup/adminserver10to101.patch ] ; then
patch -d $RPM_INSTALL_PREFIX -p0 < $RPM_INSTALL_PREFIX/setup/adminserver10to101.patch