mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-07 14:18:15 +08:00
Additional invalid objectClass changes (ITS#3097)
catch error in validation/pretty functions
This commit is contained in:
parent
cd84c58d4a
commit
69eeb79662
@ -1056,10 +1056,12 @@ LDAP_SLAPD_V( int ) schema_init_done;
|
|||||||
LDAP_SLAPD_F (int) slap_schema_init LDAP_P((void));
|
LDAP_SLAPD_F (int) slap_schema_init LDAP_P((void));
|
||||||
LDAP_SLAPD_F (void) schema_destroy LDAP_P(( void ));
|
LDAP_SLAPD_F (void) schema_destroy LDAP_P(( void ));
|
||||||
|
|
||||||
LDAP_SLAPD_F( slap_mr_indexer_func ) octetStringIndexer;
|
LDAP_SLAPD_F( slap_syntax_validate_func ) numericoidValidate;
|
||||||
|
|
||||||
|
LDAP_SLAPD_F( slap_mr_indexer_func ) octetStringIndexer;
|
||||||
LDAP_SLAPD_F( slap_mr_filter_func ) octetStringFilter;
|
LDAP_SLAPD_F( slap_mr_filter_func ) octetStringFilter;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* schema_prep.c
|
* schema_prep.c
|
||||||
*/
|
*/
|
||||||
|
@ -1502,7 +1502,7 @@ telephoneNumberNormalize(
|
|||||||
return LDAP_SUCCESS;
|
return LDAP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
numericoidValidate(
|
numericoidValidate(
|
||||||
Syntax *syntax,
|
Syntax *syntax,
|
||||||
struct berval *in )
|
struct berval *in )
|
||||||
|
@ -32,6 +32,20 @@ int schema_init_done = 0;
|
|||||||
|
|
||||||
struct slap_internal_schema slap_schema;
|
struct slap_internal_schema slap_schema;
|
||||||
|
|
||||||
|
static int objectClassValidate(
|
||||||
|
Syntax *syntax,
|
||||||
|
struct berval *in )
|
||||||
|
{
|
||||||
|
ObjectClass *oc;
|
||||||
|
int rc = numericoidValidate( syntax, in );
|
||||||
|
if ( rc ) return rc;
|
||||||
|
|
||||||
|
oc = oc_bvfind( in );
|
||||||
|
if( oc == NULL ) return LDAP_INVALID_SYNTAX;
|
||||||
|
|
||||||
|
return LDAP_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static int objectClassPretty(
|
static int objectClassPretty(
|
||||||
struct slap_syntax *syntax,
|
struct slap_syntax *syntax,
|
||||||
struct berval * in,
|
struct berval * in,
|
||||||
@ -39,13 +53,9 @@ static int objectClassPretty(
|
|||||||
void *ctx )
|
void *ctx )
|
||||||
{
|
{
|
||||||
ObjectClass *oc = oc_bvfind( in );
|
ObjectClass *oc = oc_bvfind( in );
|
||||||
|
if( oc == NULL ) return LDAP_INVALID_SYNTAX;
|
||||||
|
|
||||||
if( oc != NULL ) {
|
ber_dupbv_x( out, &oc->soc_cname, ctx );
|
||||||
ber_dupbv_x( out, &oc->soc_cname, ctx );
|
|
||||||
} else {
|
|
||||||
ber_dupbv_x( out, in, ctx );
|
|
||||||
}
|
|
||||||
|
|
||||||
return LDAP_SUCCESS;
|
return LDAP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,7 +293,7 @@ static struct slap_schema_ad_map {
|
|||||||
"EQUALITY objectIdentifierMatch "
|
"EQUALITY objectIdentifierMatch "
|
||||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )",
|
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )",
|
||||||
NULL, SLAP_AT_FINAL,
|
NULL, SLAP_AT_FINAL,
|
||||||
NULL, objectClassPretty,
|
objectClassValidate, objectClassPretty,
|
||||||
NULL, NULL, objectSubClassMatch,
|
NULL, NULL, objectSubClassMatch,
|
||||||
objectSubClassIndexer, objectSubClassFilter,
|
objectSubClassIndexer, objectSubClassFilter,
|
||||||
offsetof(struct slap_internal_schema, si_ad_objectClass) },
|
offsetof(struct slap_internal_schema, si_ad_objectClass) },
|
||||||
@ -295,7 +305,7 @@ static struct slap_schema_ad_map {
|
|||||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
|
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
|
||||||
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
|
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
|
||||||
NULL, 0,
|
NULL, 0,
|
||||||
NULL, objectClassPretty,
|
objectClassValidate, objectClassPretty,
|
||||||
NULL, NULL, objectSubClassMatch,
|
NULL, NULL, objectSubClassMatch,
|
||||||
objectSubClassIndexer, objectSubClassFilter,
|
objectSubClassIndexer, objectSubClassFilter,
|
||||||
offsetof(struct slap_internal_schema, si_ad_structuralObjectClass) },
|
offsetof(struct slap_internal_schema, si_ad_structuralObjectClass) },
|
||||||
|
Loading…
Reference in New Issue
Block a user