From 7f2ba639f89f5502119b722696261b97c1c38319 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Thu, 03 Jan 2008 17:51:53 +0000
Subject: [PATCH] Fixed the config change listeners for all log publishers so they will prevent changing the log file permissions to an invalid value. The listeners will now reject changes that will prevent OpenDS from writing to the log files.
---
opendj-sdk/opends/src/server/org/opends/server/loggers/TextErrorLogPublisher.java | 67 +++++++++++++++------------------
1 files changed, 31 insertions(+), 36 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextErrorLogPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextErrorLogPublisher.java
index 72791c4..41c8026 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextErrorLogPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextErrorLogPublisher.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ * Portions Copyright 2006-2008 Sun Microsystems, Inc.
*/
package org.opends.server.loggers;
import org.opends.messages.Message;
@@ -273,6 +273,36 @@
FileBasedErrorLogPublisherCfg config =
(FileBasedErrorLogPublisherCfg) configuration;
+ return isConfigurationChangeAcceptable(config, unacceptableReasons);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isConfigurationChangeAcceptable(
+ FileBasedErrorLogPublisherCfg config, List<Message> unacceptableReasons)
+ {
+ // Make sure the permission is valid.
+ try
+ {
+ FilePermission filePerm =
+ FilePermission.decodeUNIXMode(config.getLogFilePermissions());
+ if(!filePerm.isOwnerWritable())
+ {
+ Message message = ERR_CONFIG_LOGGING_INSANE_MODE.get(
+ config.getLogFilePermissions());
+ unacceptableReasons.add(message);
+ return false;
+ }
+ }
+ catch(DirectoryException e)
+ {
+ Message message = ERR_CONFIG_LOGGING_MODE_INVALID.get(
+ config.getLogFilePermissions(), String.valueOf(e));
+ unacceptableReasons.add(message);
+ return false;
+ }
+
for(String overrideSeverity : config.getOverrideSeverity())
{
if(overrideSeverity != null)
@@ -329,41 +359,6 @@
/**
* {@inheritDoc}
*/
- public boolean isConfigurationChangeAcceptable(
- FileBasedErrorLogPublisherCfg config, List<Message> unacceptableReasons)
- {
- // Make sure the permission is valid.
- try
- {
- if(!currentConfig.getLogFilePermissions().equalsIgnoreCase(
- config.getLogFilePermissions()))
- {
- FilePermission.decodeUNIXMode(config.getLogFilePermissions());
- }
- if(!currentConfig.getLogFile().equalsIgnoreCase(config.getLogFile()))
- {
- File logFile = getFileForPath(config.getLogFile());
- if(logFile.createNewFile())
- {
- logFile.delete();
- }
- }
- }
- catch(Exception e)
- {
- Message message = ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
- config.dn().toString(),
- stackTraceToSingleLineString(e));
- unacceptableReasons.add(message);
- return false;
- }
-
- return isConfigurationAcceptable(config, unacceptableReasons);
- }
-
- /**
- * {@inheritDoc}
- */
public ConfigChangeResult applyConfigurationChange(
FileBasedErrorLogPublisherCfg config)
{
--
Gitblit v1.10.0