*************** *** 349,354 **** case 'R': noreferrals = !noreferrals; break; case 'v': switch (atoi(value)) { case 2: --- 355,361 ---- case 'R': noreferrals = !noreferrals; break; + #ifdef LDAP_VERSION3 case 'v': switch (atoi(value)) { case 2: *************** *** 371,376 **** version = LDAP_VERSION3; use_tls = 1; break; case 'd': debug = 1; break; --- 378,384 ---- version = LDAP_VERSION3; use_tls = 1; break; + #endif case 'd': debug = 1; break; *************** *** 449,454 **** ldapServer, port); break; } if (version == -1) { version = LDAP_VERSION2; } --- 457,463 ---- ldapServer, port); break; } + #ifdef LDAP_VERSION3 if (version == -1) { version = LDAP_VERSION2; } *************** *** 466,471 **** ld = NULL; break; } squid_ldap_set_referrals(ld, !noreferrals); squid_ldap_set_aliasderef(ld, aliasderef); if (binddn && bindpasswd && *binddn && *bindpasswd) { --- 475,481 ---- ld = NULL; break; } + #endif squid_ldap_set_referrals(ld, !noreferrals); squid_ldap_set_aliasderef(ld, aliasderef); if (binddn && bindpasswd && *binddn && *bindpasswd) { *************** *** 512,521 **** } static int - ldap_escape_value(char *filter, int size, const char *src) { int n = 0; - while (size > 0 && *src) { switch(*src) { case '*': case '(': --- 522,531 ---- } static int + ldap_escape_value(char *escaped, int size, const char *src) { int n = 0; + while (size > 4 && *src) { switch(*src) { case '*': case '(': *************** *** 524,540 **** n += 3; size -= 3; if (size > 0) { - *filter++ = '\\'; - snprintf(filter, 3, "%02x", (int)*src++); - filter+=2; } break; default: - *filter++ = *src++; n++; size--; } } return n; } --- 534,551 ---- n += 3; size -= 3; if (size > 0) { + *escaped++ = '\\'; + snprintf(escaped, 3, "%02x", (int)*src++); + escaped+=2; } break; default: + *escaped++ = *src++; n++; size--; } } + *escaped = '\0'; return n; }