Hi, currently ap_getword_conf() considers a word is quoted when (and only when) it starts with a quote, regardless of this word ending (or not) with the same quote.
That is, eg., ap_getword_conf("\"") == "" or ap_getword_conf("\"whatever \\\"badly\\\" quoted") == "whatever \"badly\" quoted". I wonder if it should not return the (first) word as-is in this case, hence including the leading quote and up to the first space (ie. restart "normal" parsing from the beginning of the given line): Index: server/util.c =================================================================== --- server/util.c (revision 1674046) +++ server/util.c (working copy) @@ -780,7 +780,7 @@ AP_DECLARE(char *) ap_getword_conf_nc(apr_pool_t * AP_DECLARE(char *) ap_getword_conf(apr_pool_t *p, const char **line) { - const char *str = *line, *strend; + const char *str = *line, *strend = NULL; char *res; char quote; @@ -803,12 +803,16 @@ AP_DECLARE(char *) ap_getword_conf(apr_pool_t *p, ++strend; } } - res = substring_conf(p, str + 1, strend - str - 1, quote); - if (*strend == quote) + if (*strend) { + res = substring_conf(p, str + 1, strend - str - 1, quote); ++strend; + } + else { + strend = NULL; + } } - else { + if (!strend) { strend = str; while (*strend && !apr_isspace(*strend)) ++strend; -- With this, ap_getword_conf("\"") == "\"" and ap_getword_conf("\"whatever \\\"badly\\\" quoted") == "\"whatever" => "\\\"badly\\\" => "quoted", which may raise syntax errors/typos the administrator could be interested in. Is that more of a fix or a compatibility issue? Regards, Yann.