Diff for /servers/slapd/overlays/dds.c between versions 1.7 and 1.7.2.1

version 1.7, 2006/02/07 00:05:57 version 1.7.2.1, 2006/04/18 17:33:12
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/dds.c,v 1.6 2006/01/19 22:20:45 ando Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/dds.c,v 1.9 2006/04/13 20:24:23 hallvard Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 2005-2006 The OpenLDAP Foundation.   * Copyright 2005-2006 The OpenLDAP Foundation.
Line 357  dds_op_add( Operation *op, SlapReply *rs Line 357  dds_op_add( Operation *op, SlapReply *rs
                         slap_schema.si_oc_dynamicObject, NULL, 0, &e );                          slap_schema.si_oc_dynamicObject, NULL, 0, &e );
                 if ( rc == LDAP_SUCCESS && e != NULL ) {                  if ( rc == LDAP_SUCCESS && e != NULL ) {
                         if ( !is_dynamicObject ) {                          if ( !is_dynamicObject ) {
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                                 /* return referral only if "disclose"                                  /* return referral only if "disclose"
                                  * is granted on the object */                                   * is granted on the object */
                                 if ( ! access_allowed( op, e,                                  if ( ! access_allowed( op, e,
Line 367  dds_op_add( Operation *op, SlapReply *rs Line 366  dds_op_add( Operation *op, SlapReply *rs
                                         rc = rs->sr_err = LDAP_NO_SUCH_OBJECT;                                          rc = rs->sr_err = LDAP_NO_SUCH_OBJECT;
                                         send_ldap_result( op, rs );                                          send_ldap_result( op, rs );
   
                                 } else                                  } else {
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                                 {  
                                         rc = rs->sr_err = LDAP_CONSTRAINT_VIOLATION;                                          rc = rs->sr_err = LDAP_CONSTRAINT_VIOLATION;
                                         send_ldap_error( op, rs, rc, "no static subordinate entries allowed for dynamicObject" );                                          send_ldap_error( op, rs, rc, "no static subordinate entries allowed for dynamicObject" );
                                 }                                  }
Line 580  dds_op_modify( Operation *op, SlapReply Line 577  dds_op_modify( Operation *op, SlapReply
                                         if ( BER_BVISEMPTY( &bv_entryTtl )                                           if ( BER_BVISEMPTY( &bv_entryTtl ) 
                                                 || !bvmatch( &bv_entryTtl, &mod->sml_values[ 0 ] ) )                                                  || !bvmatch( &bv_entryTtl, &mod->sml_values[ 0 ] ) )
                                         {                                          {
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                                                 rs->sr_err = backend_attribute( op, NULL, &op->o_req_ndn,                                                   rs->sr_err = backend_attribute( op, NULL, &op->o_req_ndn, 
                                                         slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );                                                          slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );
                                                 if ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) {                                                  if ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) {
                                                         rs->sr_err = LDAP_NO_SUCH_OBJECT;                                                          rs->sr_err = LDAP_NO_SUCH_OBJECT;
   
                                                 } else                                                  } else {
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                                                 {  
                                                         rs->sr_err = LDAP_NO_SUCH_ATTRIBUTE;                                                          rs->sr_err = LDAP_NO_SUCH_ATTRIBUTE;
                                                 }                                                  }
                                                 goto done;                                                  goto done;
Line 609  dds_op_modify( Operation *op, SlapReply Line 603  dds_op_modify( Operation *op, SlapReply
                                 assert( BER_BVISNULL( &mod->sml_values[ 1 ] ) );                                  assert( BER_BVISNULL( &mod->sml_values[ 1 ] ) );
   
                                 if ( !BER_BVISEMPTY( &bv_entryTtl ) ) {                                  if ( !BER_BVISEMPTY( &bv_entryTtl ) ) {
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                                         rs->sr_err = backend_attribute( op, NULL, &op->o_req_ndn,                                           rs->sr_err = backend_attribute( op, NULL, &op->o_req_ndn, 
                                                 slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );                                                  slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );
                                         if ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) {                                          if ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) {
                                                 rs->sr_err = LDAP_NO_SUCH_OBJECT;                                                  rs->sr_err = LDAP_NO_SUCH_OBJECT;
   
                                         } else                                          } else {
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                                         {  
                                                 rs->sr_text = "attribute 'entryTtl' cannot have multiple values";                                                  rs->sr_text = "attribute 'entryTtl' cannot have multiple values";
                                                 rs->sr_err = LDAP_CONSTRAINT_VIOLATION;                                                  rs->sr_err = LDAP_CONSTRAINT_VIOLATION;
                                         }                                          }
Line 649  dds_op_modify( Operation *op, SlapReply Line 640  dds_op_modify( Operation *op, SlapReply
   
                         case LDAP_MOD_INCREMENT:                          case LDAP_MOD_INCREMENT:
                                 if ( BER_BVISEMPTY( &bv_entryTtl ) ) {                                  if ( BER_BVISEMPTY( &bv_entryTtl ) ) {
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                                         rs->sr_err = backend_attribute( op, NULL, &op->o_req_ndn,                                           rs->sr_err = backend_attribute( op, NULL, &op->o_req_ndn, 
                                                 slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );                                                  slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );
                                         if ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) {                                          if ( rs->sr_err == LDAP_INSUFFICIENT_ACCESS ) {
                                                 rs->sr_err = LDAP_NO_SUCH_OBJECT;                                                  rs->sr_err = LDAP_NO_SUCH_OBJECT;
   
                                         } else                                          } else {
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                                         {  
                                                 rs->sr_err = LDAP_NO_SUCH_ATTRIBUTE;                                                  rs->sr_err = LDAP_NO_SUCH_ATTRIBUTE;
                                                 rs->sr_text = "modify/increment: entryTtl: no such attribute";                                                  rs->sr_text = "modify/increment: entryTtl: no such attribute";
                                         }                                          }
Line 678  dds_op_modify( Operation *op, SlapReply Line 666  dds_op_modify( Operation *op, SlapReply
                                 }                                  }
   
                                 if ( rs->sr_err != LDAP_SUCCESS ) {                                  if ( rs->sr_err != LDAP_SUCCESS ) {
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                                         rc = backend_attribute( op, NULL, &op->o_req_ndn,                                           rc = backend_attribute( op, NULL, &op->o_req_ndn, 
                                                 slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );                                                  slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );
                                         if ( rc == LDAP_INSUFFICIENT_ACCESS ) {                                          if ( rc == LDAP_INSUFFICIENT_ACCESS ) {
Line 686  dds_op_modify( Operation *op, SlapReply Line 673  dds_op_modify( Operation *op, SlapReply
                                                 rs->sr_err = LDAP_NO_SUCH_OBJECT;                                                  rs->sr_err = LDAP_NO_SUCH_OBJECT;
   
                                         }                                          }
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                                         goto done;                                          goto done;
                                 }                                  }
   
Line 761  done:; Line 747  done:;
                                 rs->sr_err = LDAP_OBJECT_CLASS_VIOLATION;                                  rs->sr_err = LDAP_OBJECT_CLASS_VIOLATION;
                         }                          }
   
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                         if ( rc != LDAP_SUCCESS ) {                          if ( rc != LDAP_SUCCESS ) {
                                 rc = backend_attribute( op, NULL, &op->o_req_ndn,                                   rc = backend_attribute( op, NULL, &op->o_req_ndn, 
                                         slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );                                          slap_schema.si_ad_entry, NULL, ACL_DISCLOSE );
Line 770  done:; Line 755  done:;
                                         rs->sr_err = LDAP_NO_SUCH_OBJECT;                                          rs->sr_err = LDAP_NO_SUCH_OBJECT;
                                 }                                  }
                         }                          }
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                 }                  }
         }          }
   
Line 850  dds_op_rename( Operation *op, SlapReply Line 834  dds_op_rename( Operation *op, SlapReply
                         slap_schema.si_oc_dynamicObject, NULL, 0, &e );                          slap_schema.si_oc_dynamicObject, NULL, 0, &e );
                 if ( rc == LDAP_SUCCESS && e != NULL ) {                  if ( rc == LDAP_SUCCESS && e != NULL ) {
                         if ( !is_dynamicObject ) {                          if ( !is_dynamicObject ) {
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                                 /* return referral only if "disclose"                                  /* return referral only if "disclose"
                                  * is granted on the object */                                   * is granted on the object */
                                 if ( ! access_allowed( op, e,                                  if ( ! access_allowed( op, e,
Line 860  dds_op_rename( Operation *op, SlapReply Line 843  dds_op_rename( Operation *op, SlapReply
                                         rs->sr_err = LDAP_NO_SUCH_OBJECT;                                          rs->sr_err = LDAP_NO_SUCH_OBJECT;
                                         send_ldap_result( op, rs );                                          send_ldap_result( op, rs );
   
                                 } else                                  } else {
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                                 {  
                                         send_ldap_error( op, rs, LDAP_CONSTRAINT_VIOLATION,                                          send_ldap_error( op, rs, LDAP_CONSTRAINT_VIOLATION,
                                                 "static entry cannot have dynamicObject as newSuperior" );                                                  "static entry cannot have dynamicObject as newSuperior" );
                                 }                                  }
Line 1072  dds_op_extended( Operation *op, SlapRepl Line 1053  dds_op_extended( Operation *op, SlapRepl
                         rs->sr_err = be_entry_get_rw( op, &op->o_req_ndn,                          rs->sr_err = be_entry_get_rw( op, &op->o_req_ndn,
                                 NULL, NULL, 0, &e );                                  NULL, NULL, 0, &e );
                         if ( rs->sr_err == LDAP_SUCCESS && e != NULL ) {                          if ( rs->sr_err == LDAP_SUCCESS && e != NULL ) {
 #ifdef SLAP_ACL_HONOR_DISCLOSE  
                                 /* return referral only if "disclose"                                  /* return referral only if "disclose"
                                  * is granted on the object */                                   * is granted on the object */
                                 if ( ! access_allowed( op, e,                                  if ( ! access_allowed( op, e,
Line 1081  dds_op_extended( Operation *op, SlapRepl Line 1061  dds_op_extended( Operation *op, SlapRepl
                                 {                                  {
                                         rs->sr_err = LDAP_NO_SUCH_OBJECT;                                          rs->sr_err = LDAP_NO_SUCH_OBJECT;
   
                                 } else                                  } else {
 #endif /* SLAP_ACL_HONOR_DISCLOSE */  
                                 {  
                                         rs->sr_err = LDAP_OBJECT_CLASS_VIOLATION;                                          rs->sr_err = LDAP_OBJECT_CLASS_VIOLATION;
                                         rs->sr_text = "refresh operation only applies to dynamic objects";                                          rs->sr_text = "refresh operation only applies to dynamic objects";
                                 }                                  }
Line 1976  init_module( int argc, char *argv[] ) Line 1954  init_module( int argc, char *argv[] )
                         do_not_load_schema = no;                          do_not_load_schema = no;
   
                 } else {                  } else {
                         Log( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,                          Log2( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR,
                                 "DDS unknown module arg[#%d]=\"%s\".\n",                                  "DDS unknown module arg[#%d]=\"%s\".\n",
                                 i, argv[ i ] );                                  i, argv[ i ] );
                         return 1;                          return 1;

Removed from v.1.7  
changed lines
  Added in v.1.7.2.1


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