mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-07 14:18:15 +08:00
warn if entryUUID,entryCSN are missing and the database is shadow (ITS#6281)
This commit is contained in:
parent
3c22770aca
commit
7608e06a53
@ -280,6 +280,13 @@ slapadd( int argc, char **argv )
|
||||
struct berval nname;
|
||||
char timebuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
|
||||
|
||||
enum {
|
||||
GOT_NONE = 0x0,
|
||||
GOT_CSN = 0x1,
|
||||
GOT_UUID = 0x2,
|
||||
GOT_ALL = (GOT_CSN|GOT_UUID)
|
||||
} got = GOT_ALL;
|
||||
|
||||
vals[1].bv_len = 0;
|
||||
vals[1].bv_val = NULL;
|
||||
|
||||
@ -305,6 +312,7 @@ slapadd( int argc, char **argv )
|
||||
if( attr_find( e->e_attrs, slap_schema.si_ad_entryUUID )
|
||||
== NULL )
|
||||
{
|
||||
got &= ~GOT_UUID;
|
||||
vals[0].bv_len = lutil_uuidstr( uuidbuf, sizeof( uuidbuf ) );
|
||||
vals[0].bv_val = uuidbuf;
|
||||
attr_merge_normalize_one( e, slap_schema.si_ad_entryUUID, vals, NULL );
|
||||
@ -328,6 +336,7 @@ slapadd( int argc, char **argv )
|
||||
if( attr_find( e->e_attrs, slap_schema.si_ad_entryCSN )
|
||||
== NULL )
|
||||
{
|
||||
got &= ~GOT_CSN;
|
||||
vals[0] = csn;
|
||||
attr_merge( e, slap_schema.si_ad_entryCSN, vals, NULL );
|
||||
}
|
||||
@ -347,6 +356,19 @@ slapadd( int argc, char **argv )
|
||||
attr_merge( e, slap_schema.si_ad_modifyTimestamp, vals, NULL );
|
||||
}
|
||||
|
||||
if ( SLAP_SINGLE_SHADOW(be) && got != GOT_ALL ) {
|
||||
char buf[SLAP_TEXT_BUFLEN];
|
||||
|
||||
snprintf( buf, sizeof(buf),
|
||||
"%s%s%s",
|
||||
( !(got & GOT_UUID) ? slap_schema.si_ad_entryUUID->ad_cname.bv_val : "" ),
|
||||
( !(got & GOT_CSN) ? "," : "" ),
|
||||
( !(got & GOT_CSN) ? slap_schema.si_ad_entryCSN->ad_cname.bv_val : "" ) );
|
||||
|
||||
Debug( LDAP_DEBUG_ANY, "%s: warning, missing attrs %s from entry dn=\"%s\"\n",
|
||||
progname, buf, e->e_name.bv_val );
|
||||
}
|
||||
|
||||
if ( update_ctxcsn ) {
|
||||
int rc_sid;
|
||||
|
||||
@ -356,8 +378,8 @@ slapadd( int argc, char **argv )
|
||||
rc_sid = slap_parse_csn_sid( &attr->a_nvals[ 0 ] );
|
||||
if ( rc_sid < 0 ) {
|
||||
Debug( LDAP_DEBUG_ANY, "%s: could not "
|
||||
"extract SID from entryCSN=%s\n",
|
||||
progname, attr->a_nvals[ 0 ].bv_val, 0 );
|
||||
"extract SID from entryCSN=%s, entry dn=\"%s\"\n",
|
||||
progname, attr->a_nvals[ 0 ].bv_val, e->e_name.bv_val );
|
||||
|
||||
} else {
|
||||
assert( rc_sid <= SLAP_SYNC_SID_MAX );
|
||||
|
Loading…
Reference in New Issue
Block a user