From c58fc1918f849173e32b0ba2f5bcdb6c0ecf261d Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 2 Mar 2010 21:53:24 +0000 Subject: [PATCH] ITS#6473 from HEAD --- servers/slapd/syncrepl.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 0b9018bded..4257cfcf0b 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -1202,10 +1202,11 @@ static slap_verbmasks modops[] = { { BER_BVNULL, 0 } }; -static Modifications * +static int syncrepl_accesslog_mods( syncinfo_t *si, - struct berval *vals + struct berval *vals, + struct Modifications **modres ) { char *colon; @@ -1214,7 +1215,7 @@ syncrepl_accesslog_mods( struct berval bv, bv2; short op; Modifications *mod = NULL, *modlist = NULL, **modtail; - int i; + int i, rc = 0; modtail = &modlist; @@ -1228,7 +1229,13 @@ syncrepl_accesslog_mods( bv.bv_len = colon - bv.bv_val; if ( slap_bv2ad( &bv, &ad, &text )) { /* Invalid */ - continue; + Debug( LDAP_DEBUG_ANY, "syncrepl_accesslog_mods: %s " + "Invalid attribute %s, %s\n", + si->si_ridtxt, bv.bv_val, text ); + slap_mods_free( modlist, 1 ); + modlist = NULL; + rc = -1; + break; } /* Ignore dynamically generated attrs */ if ( ad->ad_type->sat_flags & SLAP_AT_DYNAMIC ) @@ -1266,16 +1273,18 @@ syncrepl_accesslog_mods( ber_bvarray_add( &mod->sml_values, &bv2 ); } } - return modlist; + *modres = modlist; + return rc; } -static Modifications * +static int syncrepl_changelog_mods( syncinfo_t *si, - struct berval *vals + struct berval *vals, + struct Modifications **modres ) { - return NULL; /* FIXME */ + return -1; /* FIXME */ } static int @@ -1352,9 +1361,10 @@ syncrepl_message_to_op( } else if ( !ber_bvstrcasecmp( &bv, &ls->ls_mod )) { /* Parse attribute into modlist */ if ( si->si_syncdata == SYNCDATA_ACCESSLOG ) - modlist = syncrepl_accesslog_mods( si, bvals ); + rc = syncrepl_accesslog_mods( si, bvals, &modlist ); else - modlist = syncrepl_changelog_mods( si, bvals ); + rc = syncrepl_changelog_mods( si, bvals, &modlist ); + if ( rc ) goto done; } else if ( !ber_bvstrcasecmp( &bv, &ls->ls_newRdn )) { rdn = bvals[0]; } else if ( !ber_bvstrcasecmp( &bv, &ls->ls_delRdn )) { -- 2.39.5