#include <ac/time.h>
#include <ac/socket.h>
+#include "ldap_pvt.h"
#include "slap.h"
static int add_created_attrs(Operation *op, Entry *e);
return -1;
}
- if ( dn_normalize( dn ) == NULL ) {
+ ndn = ch_strdup( dn );
+
+ if ( dn_normalize( ndn ) == NULL ) {
Debug( LDAP_DEBUG_ANY, "do_add: invalid dn (%s)\n", dn, 0, 0 );
send_ldap_result( conn, op, LDAP_INVALID_DN_SYNTAX, NULL,
"invalid DN", NULL, NULL );
free( dn );
+ free( ndn );
return LDAP_INVALID_DN_SYNTAX;
}
- ndn = ch_strdup( dn );
- ldap_pvt_str2upper( ndn );
-
e = (Entry *) ch_calloc( 1, sizeof(Entry) );
e->e_dn = dn;
return rc;
}
+ /* make sure this backend recongizes critical controls */
+ rc = backend_check_controls( be, conn, op ) ;
+
+ if( rc != LDAP_SUCCESS ) {
+ send_ldap_result( conn, op, rc,
+ NULL, NULL, NULL, NULL );
+ }
+
if ( global_readonly || be->be_readonly ) {
Debug( LDAP_DEBUG_ANY, "do_add: database is read-only\n",
0, 0, 0 );
bv.bv_len = strlen( bv.bv_val );
}
attr_merge( e, "creatorsname", bvals );
+ attr_merge( e, "modifiersname", bvals );
currenttime = slap_get_time();
ldap_pvt_thread_mutex_lock( &gmtime_mutex );
-#ifndef LDAP_LOCALTIME
ltm = gmtime( ¤ttime );
strftime( buf, sizeof(buf), "%Y%m%d%H%M%SZ", ltm );
-#else
- ltm = localtime( ¤ttime );
- strftime( buf, sizeof(buf), "%y%m%d%H%M%SZ", ltm );
-#endif
ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
bv.bv_val = buf;
bv.bv_len = strlen( bv.bv_val );
attr_merge( e, "createtimestamp", bvals );
+ attr_merge( e, "modifytimestamp", bvals );
return LDAP_SUCCESS;
}