Skip to content
Snippets Groups Projects
Commit 67cf1446 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Check schema NAMEs

parent e14afab1
No related branches found
No related tags found
No related merge requests found
......@@ -239,11 +239,19 @@ at_add(
char *cname;
if ( at->at_names && at->at_names[0] ) {
int i;
for( i=0; at->at_names[i]; i++ ) {
if( !slap_valid_descr( at->at_names[i] ) ) {
return SLAP_SCHERR_BAD_DESCR;
}
}
cname = at->at_names[0];
} else if ( at->at_oid ) {
cname = at->at_oid;
} else {
cname = "";
return SLAP_SCHERR_ATTR_INCOMPLETE;
}
......
......@@ -357,6 +357,16 @@ oc_add(
ObjectClass *soc;
int code;
if ( oc->oc_names != NULL ) {
int i;
for( i=0; oc->oc_names[i]; i++ ) {
if( !slap_valid_descr( oc->oc_names[i] ) ) {
return SLAP_SCHERR_BAD_DESCR;
}
}
}
soc = (ObjectClass *) ch_calloc( 1, sizeof(ObjectClass) );
AC_MEMCPY( &soc->soc_oclass, oc, sizeof(LDAPObjectClass) );
......
......@@ -13,6 +13,8 @@ LDAP_BEGIN_DECL
LDAP_SLAPD_F( int ) schema_init_done;
LDAP_SLAPD_F( struct slap_internal_schema ) slap_schema;
LDAP_SLAPD_F( int ) slap_valid_descr( const char * );
LDAP_SLAPD_F (int) slap_str2ad LDAP_P((
const char *,
AttributeDescription **ad,
......
......@@ -37,7 +37,8 @@ static char *const err2text[] = {
"MatchingRule not found",
"Syntax not found",
"Syntax required",
"Qualifier not supported"
"Qualifier not supported",
"Invalid NAME"
};
char *
......@@ -50,6 +51,24 @@ scherr2str(int code)
}
}
/* check schema descr validity */
int slap_valid_descr( const char *descr )
{
int i=0;
if( !DESC_LEADCHAR( descr[i] ) ) {
return 0;
}
while( descr[++i] ) {
if( !DESC_CHAR( descr[i] ) ) {
return 0;
}
}
return 1;
}
/* OID Macros */
......
......@@ -216,6 +216,7 @@ typedef struct slap_ssf_set {
#define SLAP_SCHERR_SYN_NOT_FOUND 13
#define SLAP_SCHERR_MR_INCOMPLETE 14
#define SLAP_SCHERR_NOT_SUPPORTED 15
#define SLAP_SCHERR_BAD_DESCR 16
typedef struct slap_oid_macro {
struct berval som_oid;
......
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