Changeset 674 for server/common


Ignore:
Timestamp:
Mar 5, 2008, 7:51:55 PM (17 years ago)
Author:
geofft
Message:
This one's better, e.g., it works.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • server/common/oursrc/httpdmods/mod_vhost_ldap.c

    r673 r674  
    420420};
    421421
    422 char* mod_vhost_ldap_sanitize(apr_pool_t* p, const char* source) {
    423     char* target = apr_palloc(p, 3*strlen(source)+1);
     422char *mod_vhost_ldap_escape(apr_pool_t *p, const char *source)
     423{
     424    char *target = apr_palloc(p, 3 * strlen(source) + 1);
     425    char *result = target;
    424426    for (; *source; source++) {
    425427        switch (*source) {
    426             case '*':
    427                 strcpy(target, "\\2a");
    428                 target += 3;
    429                 break;
    430             case '(':
    431                 strcpy(target, "\\28");
    432                 target += 3;
    433                 break;
    434             case ')':
    435                 strcpy(target, "\\29");
    436                 target += 3;
    437                 break;
    438             case '\\':
    439                 strcpy(target, "\\5c");
     428            case '*': case '(': case ')': case '\\':
     429                sprintf(target, "\\%02hhx", *source);
    440430                target += 3;
    441431                break;
    442432            default:
    443433                *target++ = *source;
     434                break;
    444435        }
    445436    }
    446437    *target = '\0';
    447     return target;
     438    return result;
    448439}
    449440
     
    499490                   "[mod_vhost_ldap.c]: translating %s", r->uri);
    500491
    501     s_hostname = mod_vhost_ldap_sanitize(r->pool, hostname);
     492    s_hostname = mod_vhost_ldap_escape(r->pool, hostname);
    502493    apr_snprintf(filtbuf, FILTER_LENGTH, "(&(%s)(|(apacheServerName=%s)(apacheServerAlias=%s)))", conf->filter, s_hostname, s_hostname);
    503494
Note: See TracChangeset for help on using the changeset viewer.