]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/dynlist.c
Remove redundant isGrouporMember calls
[openldap] / servers / slapd / overlays / dynlist.c
index deca8dce9fe035f2928b65a06b291e82322f500e..1210b6582a61d67de7eac416cd27328711fe3854 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2008 The OpenLDAP Foundation.
+ * Copyright 2003-2009 The OpenLDAP Foundation.
  * Portions Copyright 2004-2005 Pierangelo Masarati.
  * Portions Copyright 2008 Emmanuel Dreyfus.
  * All rights reserved.
@@ -452,12 +452,13 @@ dynlist_prepare_entry( Operation *op, SlapReply *rs, dynlist_info_t *dli )
                o.o_groups = NULL;
        }
 
+       e_flags = rs->sr_flags;
        if ( !( rs->sr_flags & REP_ENTRY_MODIFIABLE ) ) {
                e = entry_dup( rs->sr_entry );
+               e_flags |= ( REP_ENTRY_MODIFIABLE | REP_ENTRY_MUSTBEFREED );
        } else {
                e = rs->sr_entry;
        }
-       e_flags = rs->sr_flags | ( REP_ENTRY_MODIFIABLE | REP_ENTRY_MUSTBEFREED );
 
        dlc.dlc_e = e;
        dlc.dlc_dli = dli;
@@ -855,6 +856,8 @@ done:;
 
                if ( r.sr_flags & REP_ENTRY_MUSTBEFREED ) {
                        entry_free( r.sr_entry );
+                       r.sr_entry = NULL;
+                       r.sr_flags ^= REP_ENTRY_MUSTBEFREED;
                }
        }
 
@@ -1260,7 +1263,7 @@ dl_cfgen( ConfigArgs *c )
 
                                *ptr++ = ' ';
                                ptr = lutil_strncopy( ptr, dli->dli_oc->soc_cname.bv_val,
-                                       dli->dli_ad->ad_cname.bv_val );
+                                       dli->dli_oc->soc_cname.bv_len );
 
                                for ( dlm = dli->dli_dlm; dlm; dlm = dlm->dlm_next ) {
                                        ptr[ 0 ] = ' ';