https://bz.apache.org/bugzilla/show_bug.cgi?id=62102
--- Comment #3 from Luca Toscano <[email protected]> --- Ah no ok now I get what's happening, it is not strcmp's fault of course. This is the code responsible for the error reported: 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) { return APR_SUCCESS; } else { char *abs = ap_server_root_relative(p, s->error_fname); char *dir = ap_make_dirstr_parent(p, abs); apr_finfo_t finfo; apr_status_t rv = apr_stat(&finfo, dir, APR_FINFO_TYPE, p); if (rv == APR_SUCCESS && finfo.filetype != APR_DIR) rv = APR_ENOTDIR; if (rv != APR_SUCCESS) { const char *desc = "main error log"; if (s->defn_name) desc = apr_psprintf(p, "error log of vhost defined at %s:%d", s->defn_name, s->defn_line_number); ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_EMERG, rv, ap_server_conf, APLOGNO(02291) "Cannot access directory '%s' for %s", dir, desc); return !OK; } } return OK; } In theory all 'syslog::etc..' use cases should shortcut to the first if, but since strcmp expects 'syslog' and not something more the else is evaluated. In the case of 'syslog::httpd/${USER}' we get inside the second if of the else, leading to the error. I believe that the fix is only to control the first 6 chars in strcmp. -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
