Diff for /servers/slapd/schema_check.c between versions 1.103.2.7 and 1.103.2.11

version 1.103.2.7, 2008/11/19 20:11:21 version 1.103.2.11, 2009/05/06 19:06:16
Line 1 Line 1
 /* schema_check.c - routines to enforce schema definitions */  /* schema_check.c - routines to enforce schema definitions */
 /* $OpenLDAP: pkg/ldap/servers/slapd/schema_check.c,v 1.103.2.6 2008/04/18 22:33:55 ando Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/schema_check.c,v 1.103.2.10 2009/02/22 20:56:29 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 1998-2008 The OpenLDAP Foundation.   * Copyright 1998-2009 The OpenLDAP Foundation.
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
Line 49  entry_schema_check( Line 49  entry_schema_check(
         Attribute *oldattrs,          Attribute *oldattrs,
         int manage,          int manage,
         int add,          int add,
           Attribute **socp,
         const char** text,          const char** text,
         char *textbuf, size_t textlen )          char *textbuf, size_t textlen )
 {  {
Line 212  got_soc: Line 213  got_soc:
                 rc = LDAP_OBJECT_CLASS_VIOLATION;                  rc = LDAP_OBJECT_CLASS_VIOLATION;
                 goto done;                  goto done;
   
         } else if ( sc != slap_schema.si_oc_glue && sc != oc ) {          } else if ( sc != oc ) {
                 snprintf( textbuf, textlen,                   if ( !manage && sc != slap_schema.si_oc_glue ) {
                         "structural object class modification "                          snprintf( textbuf, textlen, 
                         "from '%s' to '%s' not allowed",                                  "structural object class modification "
                         asc->a_vals[0].bv_val, oc->soc_cname.bv_val );                                  "from '%s' to '%s' not allowed",
                 rc = LDAP_NO_OBJECT_CLASS_MODS;                                  asc->a_vals[0].bv_val, oc->soc_cname.bv_val );
                 goto done;                          rc = LDAP_NO_OBJECT_CLASS_MODS;
         } else if ( sc == slap_schema.si_oc_glue ) {                          goto done;
                   }
   
                   assert( asc->a_vals != NULL );
                   assert( !BER_BVISNULL( &asc->a_vals[0] ) );
                   assert( BER_BVISNULL( &asc->a_vals[1] ) );
                   assert( asc->a_nvals == asc->a_vals );
   
                   /* draft-zeilenga-ldap-relax: automatically modify
                    * structuralObjectClass if changed with relax */
                 sc = oc;                  sc = oc;
                   ber_bvreplace( &asc->a_vals[ 0 ], &sc->soc_cname );
                   if ( socp ) {
                           *socp = asc;
                   }
         }          }
   
         /* naming check */          /* naming check */
Line 783  entry_naming_check( Line 797  entry_naming_check(
         if ( ldap_bv2rdn( &e->e_name, &rdn, (char **)&p,          if ( ldap_bv2rdn( &e->e_name, &rdn, (char **)&p,
                 LDAP_DN_FORMAT_LDAP ) )                  LDAP_DN_FORMAT_LDAP ) )
         {          {
                 *text = "unrecongized attribute type(s) in RDN";                  *text = "unrecognized attribute type(s) in RDN";
                 return LDAP_INVALID_DN_SYNTAX;                  return LDAP_INVALID_DN_SYNTAX;
         }          }
   
Line 867  entry_naming_check( Line 881  entry_naming_check(
                                 SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH,                                  SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH,
                                 &ava->la_value, NULL, NULL );                                  &ava->la_value, NULL, NULL );
   
                         if( rc != 0 ) {                          if ( rc != 0 ) {
                                 switch( rc ) {                                  switch( rc ) {
                                 case LDAP_INAPPROPRIATE_MATCHING:                                  case LDAP_INAPPROPRIATE_MATCHING:
                                         snprintf( textbuf, textlen,                                           snprintf( textbuf, textlen, 
Line 881  entry_naming_check( Line 895  entry_naming_check(
                                         break;                                          break;
                                 case LDAP_NO_SUCH_ATTRIBUTE:                                  case LDAP_NO_SUCH_ATTRIBUTE:
                                         if ( add_naming ) {                                          if ( add_naming ) {
                                                 add = 1;                                                  if ( is_at_single_value( desc->ad_type ) ) {
                                                 rc = LDAP_SUCCESS;                                                          snprintf( textbuf, textlen, 
                                                                   "value of single-valued naming attribute '%s' conflicts with value present in entry",
                                                                   ava->la_attr.bv_val );
   
                                                   } else {
                                                           add = 1;
                                                           rc = LDAP_SUCCESS;
                                                   }
   
                                         } else {                                          } else {
                                                 snprintf( textbuf, textlen,                                                   snprintf( textbuf, textlen, 
                                                         "value of naming attribute '%s' is not present in entry",                                                          "value of naming attribute '%s' is not present in entry",

Removed from v.1.103.2.7  
changed lines
  Added in v.1.103.2.11


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org