/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2013 The OpenLDAP Foundation.
+ * Copyright 1998-2017 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
rc = slap_bv2ad( type+i, &ad, &text );
if( rc != LDAP_SUCCESS ) {
- Debug( slapMode & SLAP_TOOL_MODE
- ? LDAP_DEBUG_ANY : LDAP_DEBUG_TRACE,
+ int wtool = ( slapMode & (SLAP_TOOL_MODE|SLAP_TOOL_READONLY) ) == SLAP_TOOL_MODE;
+ Debug( wtool ? LDAP_DEBUG_ANY : LDAP_DEBUG_TRACE,
"<= str2entry: str2ad(%s): %s\n", type[i].bv_val, text, 0 );
- if( slapMode & SLAP_TOOL_MODE ) {
+ if( wtool ) {
goto fail;
}
if (( ad_prev && ad != ad_prev ) || ( i == lines )) {
int j, k;
- /* FIXME: we only need this when migrating from an unsorted DB */
- if ( atail != &ahead && atail->a_desc->ad_type->sat_flags & SLAP_AT_SORTED_VAL ) {
- rc = slap_sort_vals( (Modifications *)atail, &text, &j, NULL );
- if ( rc == LDAP_SUCCESS ) {
- atail->a_flags |= SLAP_ATTR_SORTED_VALS;
- } else if ( rc == LDAP_TYPE_OR_VALUE_EXISTS ) {
- Debug( LDAP_DEBUG_ANY,
- "str2entry: attributeType %s value #%d provided more than once\n",
- atail->a_desc->ad_cname.bv_val, j, 0 );
- goto fail;
- }
- }
atail->a_next = attr_alloc( NULL );
atail = atail->a_next;
atail->a_flags = 0;
atail->a_nvals = atail->a_vals;
}
attr_cnt = 0;
+ /* FIXME: we only need this when migrating from an unsorted DB */
+ if ( atail->a_desc->ad_type->sat_flags & SLAP_AT_SORTED_VAL ) {
+ rc = slap_sort_vals( (Modifications *)atail, &text, &j, NULL );
+ if ( rc == LDAP_SUCCESS ) {
+ atail->a_flags |= SLAP_ATTR_SORTED_VALS;
+ } else if ( rc == LDAP_TYPE_OR_VALUE_EXISTS ) {
+ Debug( LDAP_DEBUG_ANY,
+ "str2entry: attributeType %s value #%d provided more than once\n",
+ atail->a_desc->ad_cname.bv_val, j, 0 );
+ goto fail;
+ }
+ }
if ( i == lines ) break;
}
goto fail;
}
- if( slapMode & SLAP_TOOL_MODE ) {
- struct berval pval;
- slap_syntax_validate_func *validate =
- ad->ad_type->sat_syntax->ssyn_validate;
- slap_syntax_transform_func *pretty =
- ad->ad_type->sat_syntax->ssyn_pretty;
-
- if ( pretty ) {
- rc = ordered_value_pretty( ad,
- &vals[i], &pval, NULL );
-
- } else if ( validate ) {
- /*
- * validate value per syntax
- */
- rc = ordered_value_validate( ad, &vals[i], LDAP_MOD_ADD );
-
- } else {
- Debug( LDAP_DEBUG_ANY,
- "str2entry: attributeType %s #%d: "
- "no validator for syntax %s\n",
- ad->ad_cname.bv_val, attr_cnt,
- ad->ad_type->sat_syntax->ssyn_oid );
- goto fail;
- }
-
- if( rc != 0 ) {
- Debug( LDAP_DEBUG_ANY,
- "str2entry: invalid value "
- "for attributeType %s #%d (syntax %s)\n",
- ad->ad_cname.bv_val, attr_cnt,
- ad->ad_type->sat_syntax->ssyn_oid );
- goto fail;
- }
-
- if( pretty ) {
- if ( freeval[i] ) free( vals[i].bv_val );
- vals[i] = pval;
- freeval[i] = 1;
- }
- }
-
if ( ad->ad_type->sat_equality &&
ad->ad_type->sat_equality->smr_normalize )
{