瀏覽代碼

minor fixes for bdb 4.2/4.3 and mozldap

Rich Megginson 13 年之前
父節點
當前提交
32ab01f556

+ 1 - 0
ldap/servers/plugins/rootdn_access/rootdn_access.c

@@ -46,6 +46,7 @@
 #include <nspr.h>
 #include <time.h>
 #include <ctype.h>
+#include <string.h>
 
 /*
  * Add an entry like the following to dse.ldif to enable this plugin:

+ 1 - 1
ldap/servers/slapd/back-ldbm/dblayer.c

@@ -136,7 +136,7 @@
 #define LOG_FLUSH(env, lsn) (env)->log_flush((env), (lsn))
 #define LOCK_DETECT(env, flags, atype, aborted) \
     (env)->lock_detect((env), (flags), (atype), (aborted))
-#if 1000*DB_VERSION_MAJOR + 100*DB_VERSION_MINOR >= 4000 /* db4.4 or later */
+#if 1000*DB_VERSION_MAJOR + 100*DB_VERSION_MINOR >= 4400 /* db4.4 or later */
 #define DB_ENV_SET_TAS_SPINS(env, tas_spins) \
     (env)->mutex_set_tas_spins((env), (tas_spins))
 #else /* < 4.4 */

+ 5 - 1
ldap/servers/slapd/util.c

@@ -340,12 +340,16 @@ filter_stuff_func(void *arg, const char *val, PRUint32 slen)
                 buf = escaped_filter.bv_val;
             }
 #else
+            char *val2 = NULL;
             buf = slapi_ch_calloc(sizeof(char), filter_len*3 + 1);
-            if(do_escape_string(val, filter_len, buf, special_filter) == NULL){
+            val2 = do_escape_string(val, filter_len, buf, special_filter);
+            if(val2 == NULL){
                 LDAPDebug(LDAP_DEBUG_TRACE, "slapi_filter_sprintf: failed to escape filter value(%s)\n",val,0,0);
                 ctx->next_arg_needs_esc_norm = 0;
                 slapi_ch_free_string(&buf);
                 return -1;
+            } else if (val == val2) { /* value did not need escaping and was just returned */
+                strcpy(buf, val); /* just use value as-is - len did not change */
             } else {
                 filter_len = strlen(buf);
             }