return SLAPD_DISCONNECT;
}
- rs->sr_err = dnPrettyNormal( NULL, &dn, &op->o_req_dn, &op->o_req_ndn,
- op->o_tmpmemctx );
-
- if ( rs->sr_err != LDAP_SUCCESS ) {
- Debug( LDAP_DEBUG_ANY, "%s do_add: invalid dn (%s)\n",
- op->o_log_prefix, dn.bv_val, 0 );
- send_ldap_error( op, rs, LDAP_INVALID_DN_SYNTAX, "invalid DN" );
- goto done;
- }
-
- Statslog( LDAP_DEBUG_STATS, "%s ADD dn=\"%s\"\n",
- op->o_log_prefix, op->o_req_dn.bv_val, 0, 0, 0 );
-
- op->ora_e = entry_alloc();
- ber_dupbv( &op->ora_e->e_name, &op->o_req_dn );
- ber_dupbv( &op->ora_e->e_nname, &op->o_req_ndn );
-
Debug( LDAP_DEBUG_ARGS, "%s do_add: dn (%s)\n",
- op->o_log_prefix, op->ora_e->e_dn, 0 );
+ op->o_log_prefix, dn.bv_val, 0 );
/* get the attrs */
for ( tag = ber_first_element( ber, &len, &last ); tag != LBER_DEFAULT;
goto done;
}
+ rs->sr_err = dnPrettyNormal( NULL, &dn, &op->o_req_dn, &op->o_req_ndn,
+ op->o_tmpmemctx );
+
+ if ( rs->sr_err != LDAP_SUCCESS ) {
+ Debug( LDAP_DEBUG_ANY, "%s do_add: invalid dn (%s)\n",
+ op->o_log_prefix, dn.bv_val, 0 );
+ send_ldap_error( op, rs, LDAP_INVALID_DN_SYNTAX, "invalid DN" );
+ goto done;
+ }
+
+ op->ora_e = entry_alloc();
+ ber_dupbv( &op->ora_e->e_name, &op->o_req_dn );
+ ber_dupbv( &op->ora_e->e_nname, &op->o_req_ndn );
+
+ Statslog( LDAP_DEBUG_STATS, "%s ADD dn=\"%s\"\n",
+ op->o_log_prefix, op->o_req_dn.bv_val, 0, 0, 0 );
+
if ( modlist == NULL ) {
send_ldap_error( op, rs, LDAP_PROTOCOL_ERROR,
"no attributes provided" );
char *textbuf, size_t textlen )
{
Attribute **tail;
+ int i;
if ( initial ) {
assert( (*e)->e_attrs == NULL );
if( attr != NULL ) {
#define SLURPD_FRIENDLY
#ifdef SLURPD_FRIENDLY
- ber_len_t i,j;
+ int j;
if ( !initial ) {
/*
return LDAP_SUCCESS;
}
- for( i=0; attr->a_vals[i].bv_val; i++ ) {
- /* count them */
- }
- for( j=0; mods->sml_values[j].bv_val; j++ ) {
- /* count them */
- }
+ i = attr->a_numvals;
+ j = mods->sml_numvals;
+ attr->a_numvals += j;
j++; /* NULL */
attr->a_vals = ch_realloc( attr->a_vals,
attr = attr_alloc( mods->sml_desc );
/* move values to attr structure */
+ i = mods->sml_numvals;
+ attr->a_numvals = mods->sml_numvals;
if ( dup ) {
- int i;
- for ( i = 0; mods->sml_values[i].bv_val; i++ ) /* EMPTY */;
attr->a_vals = (BerVarray) ch_calloc( i+1, sizeof( BerValue ));
for ( i = 0; mods->sml_values[i].bv_val; i++ ) {
ber_dupbv( &attr->a_vals[i], &mods->sml_values[i] );
if ( mods->sml_nvalues ) {
if ( dup ) {
- int i;
- for ( i = 0; mods->sml_nvalues[i].bv_val; i++ ) /* EMPTY */;
+ i = mods->sml_numvals;
attr->a_nvals = (BerVarray) ch_calloc( i+1, sizeof( BerValue ));
for ( i = 0; mods->sml_nvalues[i].bv_val; i++ ) {
ber_dupbv( &attr->a_nvals[i], &mods->sml_nvalues[i] );
} else {
attr->a_nvals = attr->a_vals;
}
+ /* slap_mods_check() gives us sorted results */
+ if ( attr->a_desc->ad_type->sat_flags & SLAP_AT_SORTED_VAL )
+ attr->a_flags |= SLAP_ATTR_SORTED_VALS;
*tail = attr;
tail = &attr->a_next;
mod->sml_type = a_new_desc->ad_cname;
- for ( count = 0; a_new->a_vals[count].bv_val; count++ ) /* EMPTY */;
+ count = a_new->a_numvals;
+ mod->sml_numvals = a_new->a_numvals;
mod->sml_values = (struct berval*) malloc(
(count+1) * sizeof( struct berval) );