mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
allow '-o value-check={yes|no}' for optional value checking, disabled in quick mode (ITS#6592)
This commit is contained in:
parent
34f4f38acc
commit
856f1b401a
@ -1588,6 +1588,7 @@ LDAP_SLAPD_V (int) slapMode;
|
|||||||
#define SLAP_TOOL_READONLY 0x0400
|
#define SLAP_TOOL_READONLY 0x0400
|
||||||
#define SLAP_TOOL_QUICK 0x0800
|
#define SLAP_TOOL_QUICK 0x0800
|
||||||
#define SLAP_TOOL_NO_SCHEMA_CHECK 0x1000
|
#define SLAP_TOOL_NO_SCHEMA_CHECK 0x1000
|
||||||
|
#define SLAP_TOOL_VALUE_CHECK 0x2000
|
||||||
|
|
||||||
#define SB_TLS_DEFAULT (-1)
|
#define SB_TLS_DEFAULT (-1)
|
||||||
#define SB_TLS_OFF 0
|
#define SB_TLS_OFF 0
|
||||||
|
@ -103,6 +103,14 @@ slapadd( int argc, char **argv )
|
|||||||
|
|
||||||
checkvals = (slapMode & SLAP_TOOL_QUICK) ? 0 : 1;
|
checkvals = (slapMode & SLAP_TOOL_QUICK) ? 0 : 1;
|
||||||
|
|
||||||
|
/* do not check values in quick mode */
|
||||||
|
if ( slapMode & SLAP_TOOL_QUICK ) {
|
||||||
|
if ( slapMode & SLAP_TOOL_VALUE_CHECK ) {
|
||||||
|
fprintf( stderr, "%s: value-check incompatible with quick mode; disabled.\n", progname );
|
||||||
|
slapMode &= ~SLAP_TOOL_VALUE_CHECK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lmax = 0;
|
lmax = 0;
|
||||||
nextline = 0;
|
nextline = 0;
|
||||||
|
|
||||||
@ -267,6 +275,34 @@ slapadd( int argc, char **argv )
|
|||||||
}
|
}
|
||||||
textbuf[ 0 ] = '\0';
|
textbuf[ 0 ] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( (slapMode & SLAP_TOOL_VALUE_CHECK) != 0) {
|
||||||
|
Modifications *ml = NULL;
|
||||||
|
|
||||||
|
if ( slap_entry2mods( e, &ml, &text, textbuf, textlen )
|
||||||
|
!= LDAP_SUCCESS )
|
||||||
|
{
|
||||||
|
fprintf( stderr, "%s: dn=\"%s\" (line=%d): (%d) %s\n",
|
||||||
|
progname, e->e_dn, lineno, rc, text );
|
||||||
|
rc = EXIT_FAILURE;
|
||||||
|
entry_free( e );
|
||||||
|
if( continuemode ) continue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
textbuf[ 0 ] = '\0';
|
||||||
|
|
||||||
|
rc = slap_mods_check( op, ml, &text, textbuf, textlen, NULL );
|
||||||
|
slap_mods_free( ml, 1 );
|
||||||
|
if ( rc != LDAP_SUCCESS ) {
|
||||||
|
fprintf( stderr, "%s: dn=\"%s\" (line=%d): (%d) %s\n",
|
||||||
|
progname, e->e_dn, lineno, rc, text );
|
||||||
|
rc = EXIT_FAILURE;
|
||||||
|
entry_free( e );
|
||||||
|
if( continuemode ) continue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
textbuf[ 0 ] = '\0';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( SLAP_LASTMOD(be) ) {
|
if ( SLAP_LASTMOD(be) ) {
|
||||||
|
@ -192,6 +192,42 @@ parse_slapopt( int tool, int *mode )
|
|||||||
#endif /* LOG_LOCAL4 */
|
#endif /* LOG_LOCAL4 */
|
||||||
#endif /* LDAP_DEBUG && LDAP_SYSLOG */
|
#endif /* LDAP_DEBUG && LDAP_SYSLOG */
|
||||||
|
|
||||||
|
} else if ( strncasecmp( optarg, "schema-check", len ) == 0 ) {
|
||||||
|
switch ( tool ) {
|
||||||
|
case SLAPADD:
|
||||||
|
if ( strcasecmp( p, "yes" ) == 0 ) {
|
||||||
|
*mode &= ~SLAP_TOOL_NO_SCHEMA_CHECK;
|
||||||
|
} else if ( strcasecmp( p, "no" ) == 0 ) {
|
||||||
|
*mode |= SLAP_TOOL_NO_SCHEMA_CHECK;
|
||||||
|
} else {
|
||||||
|
Debug( LDAP_DEBUG_ANY, "unable to parse schema-check=\"%s\".\n", p, 0, 0 );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Debug( LDAP_DEBUG_ANY, "schema-check meaningless for tool.\n", 0, 0, 0 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if ( strncasecmp( optarg, "value-check", len ) == 0 ) {
|
||||||
|
switch ( tool ) {
|
||||||
|
case SLAPADD:
|
||||||
|
if ( strcasecmp( p, "yes" ) == 0 ) {
|
||||||
|
*mode |= SLAP_TOOL_VALUE_CHECK;
|
||||||
|
} else if ( strcasecmp( p, "no" ) == 0 ) {
|
||||||
|
*mode &= ~SLAP_TOOL_VALUE_CHECK;
|
||||||
|
} else {
|
||||||
|
Debug( LDAP_DEBUG_ANY, "unable to parse value-check=\"%s\".\n", p, 0, 0 );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Debug( LDAP_DEBUG_ANY, "value-check meaningless for tool.\n", 0, 0, 0 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user