/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2007 The OpenLDAP Foundation.
+ * Copyright 1998-2009 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
if ( op->orm_increment && !SLAP_INCREMENT( op->o_bd ) ) {
send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
"modify/increment not supported in context" );
+ goto cleanup;
}
/*
ml->sml_values[nvals] = pval;
}
}
+ ml->sml_values[nvals].bv_len = 0;
ml->sml_numvals = nvals;
/*
#define SWAP(a,b,tmp) tmp=(a);(a)=(b);(b)=tmp
#define COMP(a,b) match=0; rc = ordered_value_match( &match, \
ad, mr, SLAP_MR_EQUALITY \
- | SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX \
+ | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX \
| SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH \
| SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH, \
&(a), &(b), text );
}
}
done:
- if ( i >= 0 )
+ if ( match == 0 && i >= 0 )
*dup = ix[i];
/* For sorted attributes, put the values in index order */
*/
void slap_timestamp( time_t *tm, struct berval *bv )
{
- struct tm *ltm;
-#ifdef HAVE_GMTIME_R
- struct tm ltm_buf;
-
- ltm = gmtime_r( tm, <m_buf );
-#else
- ldap_pvt_thread_mutex_lock( &gmtime_mutex );
- ltm = gmtime( tm );
-#endif
+ struct tm ltm;
- bv->bv_len = lutil_gentime( bv->bv_val, bv->bv_len, ltm );
+ ldap_pvt_gmtime( tm, <m );
-#ifndef HAVE_GMTIME_R
- ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
-#endif
+ bv->bv_len = lutil_gentime( bv->bv_val, bv->bv_len, <m );
}
/* Called for all modify and modrdn ops. If the current op was replicated
struct berval name, timestamp, csn = BER_BVNULL;
struct berval nname;
char timebuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
- char csnbuf[ LDAP_LUTIL_CSNSTR_BUFSIZE ];
+ char csnbuf[ LDAP_PVT_CSNSTR_BUFSIZE ];
Modifications *mod, **modtail, *modlast;
int gotcsn = 0, gotmname = 0, gotmtime = 0;