1
0
mirror of https://github.com/apache/httpd.git synced 2026-01-06 09:01:14 +03:00

mod_auth_ldap: Handle the inconsistent way in which the MS LDAP

library handles special characters.
PR:	24437
Obtained from:
Submitted by:	Jess Holle
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105379 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Graham Leggett
2004-10-04 23:43:20 +00:00
parent 0e9a37b863
commit a2e54fb970
2 changed files with 36 additions and 5 deletions

View File

@@ -2,6 +2,9 @@ Changes with Apache 2.1.0-dev
[Remove entries to the current 2.0 section below, when backported]
*) mod_auth_ldap: Handle the inconsistent way in which the MS LDAP
library handles special characters. PR 24437 [Jess Holle]
*) mod_ldap: fix a bogus error message to tell the user which file
is causing a potential problem with the LDAP shared memory cache.
PR 31431 [Graham Leggett]

View File

@@ -207,19 +207,47 @@ static void authn_ldap_build_filter(char *filtbuf,
* LDAP filter metachars are escaped.
*/
filtbuf_end = filtbuf + FILTER_LENGTH - 1;
#if APR_HAS_MICROSOFT_LDAPSDK
for (p = user, q=filtbuf + strlen(filtbuf);
*p && q < filtbuf_end; ) {
if (strchr("*()\\", *p) != NULL) {
if ( q + 3 >= filtbuf_end)
break; /* Don't write part of escape sequence if we can't write all of it */
*q++ = '\\';
switch ( *p++ )
{
case '*':
*q++ = '2';
*q++ = 'a';
break;
case '(':
*q++ = '2';
*q++ = '8';
break;
case ')':
*q++ = '2';
*q++ = '9';
break;
case '\\':
*q++ = '5';
*q++ = 'c';
break;
}
}
else
*q++ = *p++;
}
#else
for (p = user, q=filtbuf + strlen(filtbuf);
*p && q < filtbuf_end; *q++ = *p++) {
#if APR_HAS_MICROSOFT_LDAPSDK
/* Note: The Microsoft SDK escapes for us, so is not necessary */
#else
if (strchr("*()\\", *p) != NULL) {
*q++ = '\\';
if (q >= filtbuf_end) {
break;
break;
}
}
#endif
}
#endif
*q = '\0';
/*