***************
*** 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;
  }
  

