Commit 25bed4e6 authored by Graham Leggett's avatar Graham Leggett
Browse files

mod_ext_filter: Handle filter names which include capital letters.

PR 40323.

+1: trawick, rpluem, jim


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@463477 13f79535-47bb-0310-9956-ffa450edef68
parent 520a219f
Loading
Loading
Loading
Loading
+3 −0
Changes for CHANGES: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.4
  *) mod_ext_filter: Handle filter names which include capital letters.
     PR 40323.  [Jeff Trawick]
  *) mod_isapi: Avoid double trailing slashes in HSE_REQ_MAP_URL_TO_PATH
     support.  Also corrects the slashes for Windows.  PR 15993. [William Rowe]
+0 −6
Changes for STATUS: 0 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -77,12 +77,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

    * mod_ext_filter: Handle filter names which include capital letters.
      PR 40323.
      Trunk patch, which applies:
        http://svn.apache.org/viewvc?view=rev&revision=440028
      +1: trawick, rpluem, jim

    * core: Deal with the widespread use of apr_status_t return values
      as HTTP status codes, as documented in PR#31759 (a bug shared by
      the default handler, mod_cgi, mod_cgid, mod_proxy, and probably
+12 −2
Changes for modules/filters/mod_ext_filter.c: 12 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ static const char *define_filter(cmd_parms *cmd, void *dummy, const char *args)
                                             &ext_filter_module);
    const char *token;
    const char *name;
    char *normalized_name;
    ef_filter_t *filter;

    name = ap_getword_white(cmd->pool, &args);
@@ -213,7 +214,16 @@ static const char *define_filter(cmd_parms *cmd, void *dummy, const char *args)
        return "Filter name not found";
    }

    if (apr_hash_get(conf->h, name, APR_HASH_KEY_STRING)) {
    /* During request processing, we find information about the filter
     * by looking up the filter name provided by core server in our
     * hash table.  But the core server has normalized the filter
     * name by converting it to lower case.  Thus, when adding the
     * filter to our hash table we have to use lower case as well.
     */
    normalized_name = apr_pstrdup(cmd->pool, name);
    ap_str_tolower(normalized_name);

    if (apr_hash_get(conf->h, normalized_name, APR_HASH_KEY_STRING)) {
        return apr_psprintf(cmd->pool, "ExtFilter %s is already defined",
                            name);
    }
@@ -222,7 +232,7 @@ static const char *define_filter(cmd_parms *cmd, void *dummy, const char *args)
    filter->name = name;
    filter->mode = OUTPUT_FILTER;
    filter->ftype = AP_FTYPE_RESOURCE;
    apr_hash_set(conf->h, name, APR_HASH_KEY_STRING, filter);
    apr_hash_set(conf->h, normalized_name, APR_HASH_KEY_STRING, filter);

    while (*args) {
        while (apr_isspace(*args)) {