]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Allow relative pathnames for piped loggers in ErrorLog.
authorRainer Jung <rjung@apache.org>
Thu, 14 May 2009 12:59:25 +0000 (12:59 +0000)
committerRainer Jung <rjung@apache.org>
Thu, 14 May 2009 12:59:25 +0000 (12:59 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@774755 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
server/log.c

diff --git a/CHANGES b/CHANGES
index c889624c18874c21d9752f966b8acf5eca9b1f2e..5c812d780cc46fbb741464bfa66cde58e71e47e1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,9 @@ Changes with Apache 2.3.3
      mod_proxy_ajp: Avoid delivering content from a previous request which
      failed to send a request body. PR 46949 [Ruediger Pluem]
 
+  *) core: Allow relative pathnames for piped loggers in ErrorLog.
+     [Rainer Jung]
+
   *) Windows: Fix usage message.
      [Rainer Jung]
 
index c830faf8ba0c2680d96a97c5734be989936c1efa..e1662aebc1248b51cb497f8f3634f661df109585 100644 (file)
@@ -320,16 +320,24 @@ static int open_error_log(server_rec *s, int is_main, apr_pool_t *p)
 
     if (*s->error_fname == '|') {
         apr_file_t *dummy = NULL;
+        fname = ap_server_root_relative(p, s->error_fname + 1);
+
+        if (!fname) {
+            ap_log_error(APLOG_MARK, APLOG_STARTUP, APR_EBADPATH, NULL,
+                         "%s: Invalid error log path %s.",
+                         ap_server_argv0, s->error_fname);
+            return DONE;
+        }
 
         /* Spawn a new child logger.  If this is the main server_rec,
          * the new child must use a dummy stderr since the current
          * stderr might be a pipe to the old logger.  Otherwise, the
          * child inherits the parents stderr. */
-        rc = log_child(p, s->error_fname + 1, &dummy, is_main);
+        rc = log_child(p, fname, &dummy, is_main);
         if (rc != APR_SUCCESS) {
             ap_log_error(APLOG_MARK, APLOG_STARTUP, rc, NULL,
                          "Couldn't start ErrorLog process '%s'.",
-                         s->error_fname + 1);
+                         fname);
             return DONE;
         }