Skip to content
Snippets Groups Projects
Commit 52ad705e authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#6592

parent 414f37f8
No related branches found
No related tags found
No related merge requests found
OpenLDAP 2.4 Change Log
OpenLDAP 2.4.24 Engineering
Addes slapadd attribute value checking (ITS#6592)
Added slapd-null back-config support (ITS#6624)
Added slapd-sql autocommit support (ITS#6612)
Addes slapd-sql support for long long keys (ITS#6617)
......
......@@ -147,7 +147,13 @@ Possible generic options/values are:
syslog\-level=<level> (see `\-S' in slapd(8))
syslog\-user=<user> (see `\-l' in slapd(8))
.fi
schema-check={yes|no}
value-check={yes|no}
.in
The \fIschema\-check\fR option toggles schema checking (default on);
the \fIvalue\-check\fR option toggles value checking (default off).
The latter is incompatible with \fB-q\fR.
.TP
.B \-q
enable quick (fewer integrity checks) mode. Does fewer consistency checks
......
......@@ -1588,6 +1588,7 @@ LDAP_SLAPD_V (int) slapMode;
#define SLAP_TOOL_READONLY 0x0400
#define SLAP_TOOL_QUICK 0x0800
#define SLAP_TOOL_NO_SCHEMA_CHECK 0x1000
#define SLAP_TOOL_VALUE_CHECK 0x2000
#define SB_TLS_DEFAULT (-1)
#define SB_TLS_OFF 0
......
......@@ -103,6 +103,14 @@ slapadd( int argc, char **argv )
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;
nextline = 0;
......@@ -267,6 +275,34 @@ slapadd( int argc, char **argv )
}
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) ) {
......
......@@ -192,6 +192,42 @@ parse_slapopt( int tool, int *mode )
#endif /* LOG_LOCAL4 */
#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 {
return -1;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment