From 817b185548178262e2a8b3a4ffdca7ab29be9b6c Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Tue, 29 May 2018 21:24:11 +0000 Subject: [PATCH] core: use strncmp in check_errorlog_dir and core_dump_config when checking if the ErrorLog directive is configured with the 'syslog' prefix. PR 62102 trunk patch: none, as far as I can see the code in trunk diverged too much due to the code in STALLED for ap_errorlog_provider. Submitted by: elukey, jhriggs, jailletc36 Reviewed by: elukey, jhriggs, ylavic git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1832493 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ server/core.c | 7 +++++-- server/log.c | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index d778cdd831..988932b448 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.4.34 + *) core, log: improve sanity checks for the ErrorLog's syslog config, and + explicitly allow ony lowercase 'syslog' settings. PR 62102 + [Luca Toscano, Jim Riggs, Christophe Jaillet] + *) mod_http2: accurate reporting of h2 data input/output per request via mod_logio. Fixes an issue where output sizes where counted n-times on reused slave connections. See gituhub issue: https://github.com/icing/mod_h2/issues/158 diff --git a/server/core.c b/server/core.c index 4af08166f6..5e9d6501bd 100644 --- a/server/core.c +++ b/server/core.c @@ -4867,7 +4867,8 @@ AP_DECLARE(int) ap_sys_privileges_handlers(int inc) static int check_errorlog_dir(apr_pool_t *p, server_rec *s) { if (!s->error_fname || s->error_fname[0] == '|' - || strcmp(s->error_fname, "syslog") == 0) { + || strcmp(s->error_fname, "syslog") == 0 + || strncmp(s->error_fname, "syslog:", 7) == 0) { return APR_SUCCESS; } else { @@ -5281,7 +5282,9 @@ static void core_dump_config(apr_pool_t *p, server_rec *s) apr_file_printf(out, "ServerRoot: \"%s\"\n", ap_server_root); tmp = ap_server_root_relative(p, sconf->ap_document_root); apr_file_printf(out, "Main DocumentRoot: \"%s\"\n", tmp); - if (s->error_fname[0] != '|' && strcmp(s->error_fname, "syslog") != 0) + if (s->error_fname[0] != '|' + && strcmp(s->error_fname, "syslog") != 0 + && strncmp(s->error_fname, "syslog:", 7) != 0) tmp = ap_server_root_relative(p, s->error_fname); else tmp = s->error_fname; diff --git a/server/log.c b/server/log.c index 22567a43af..bf623eaf7c 100644 --- a/server/log.c +++ b/server/log.c @@ -396,7 +396,8 @@ static int open_error_log(server_rec *s, int is_main, apr_pool_t *p) } #ifdef HAVE_SYSLOG - else if (!strncasecmp(s->error_fname, "syslog", 6)) { + else if (strcmp(s->error_fname, "syslog") == 0 + || strncmp(s->error_fname, "syslog:", 7) == 0) { if ((fname = strchr(s->error_fname, ':'))) { /* s->error_fname could be [level]:[tag] (see #60525) */ const char *tag; -- 2.40.0