nop->o_bd = on->on_info->oi_origdb;
rc = nop->o_bd->be_search(nop, &nrs);
filter_free_x(nop, nop->ors_filter);
- ch_free( key );
+ op->o_tmpfree( key, op->o_tmpmemctx );
if(rc != LDAP_SUCCESS && rc != LDAP_NO_SUCH_OBJECT) {
op->o_bd->bd_info = (BackendInfo *) on->on_info;
return(SLAP_CB_CONTINUE);
}
+#define ALLOC_EXTRA 16 /* extra slop */
+
static int unique_add(
Operation *op,
SlapReply *rs
Attribute *a;
char *key, *kp;
- int ks = 16;
+ int ks = 0;
Debug(LDAP_DEBUG_TRACE, "==> unique_add <%s>\n", op->o_req_dn.bv_val, 0, 0);
ks = count_filter_len(ud, a->a_desc, a->a_vals, ks);
}
- key = ch_malloc(ks);
+ if ( !ks )
+ return SLAP_CB_CONTINUE;
+
+ ks += ALLOC_EXTRA;
+ key = op->o_tmpalloc(ks, op->o_tmpmemctx);
kp = key + sprintf(key, "(|");
Modifications *m;
char *key, *kp;
- int ks = 16; /* a handful of extra bytes */
+ int ks = 0;
Debug(LDAP_DEBUG_TRACE, "==> unique_modify <%s>\n", op->o_req_dn.bv_val, 0, 0);
ks = count_filter_len(ud, m->sml_desc, m->sml_values, ks);
}
- key = ch_malloc(ks);
+ if ( !ks )
+ return SLAP_CB_CONTINUE;
+
+ ks += ALLOC_EXTRA;
+ key = op->o_tmpalloc(ks, op->o_tmpmemctx);
kp = key + sprintf(key, "(|");
Operation nop = *op;
char *key, *kp;
- int i, ks = 16; /* a handful of extra bytes */
+ int i, ks = 0;
LDAPRDN newrdn;
struct berval bv[2];
ks = count_filter_len(ud, newrdn[i]->la_private, bv, ks);
}
- key = ch_malloc(ks);
+ if ( !ks )
+ return SLAP_CB_CONTINUE;
+
+ ks += ALLOC_EXTRA;
+ key = op->o_tmpalloc(ks, op->o_tmpmemctx);
kp = key + sprintf(key, "(|");
for(i = 0; newrdn[i]; i++) {