]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/dynlist.c
Plug memleak when query isn't added to cache
[openldap] / servers / slapd / overlays / dynlist.c
index 5247c71b77f4c5c675be1f32a74799ea2de0e108..163e4daa8552eb3e22b14ce2abfed20d046d5fb4 100644 (file)
@@ -1,7 +1,7 @@
 /* dynlist.c - dynamic list overlay */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2005 The OpenLDAP Foundation.
+ * Copyright 2003-2006 The OpenLDAP Foundation.
  * Portions Copyright 2004-2005 Pierangelo Masarati.
  * All rights reserved.
  *
@@ -376,6 +376,8 @@ dynlist_send_entry( Operation *op, SlapReply *rs, dynlist_info_t *dli )
                o.ors_scope = lud->lud_scope;
 
                if ( dli->dli_member_ad != NULL ) {
+                       /* if ( lud->lud_attrs != NULL ),
+                        * the URL should be ignored */
                        o.ors_attrs = slap_anlist_no_attrs;
 
                } else if ( lud->lud_attrs == NULL ) {
@@ -530,6 +532,7 @@ dynlist_compare( Operation *op, SlapReply *rs )
                                 * the assertion is FALSE rather than
                                 * UNDEFINED */
                                rs->sr_err = LDAP_COMPARE_FALSE;
+                               break;
                        }
 
                        return SLAP_CB_CONTINUE;
@@ -778,6 +781,8 @@ dynlist_db_config(
                for ( dlip = (dynlist_info_t **)&on->on_bi.bi_private;
                        *dlip; dlip = &(*dlip)->dli_next )
                {
+                       /* The check on objectClass may be relaxed */
+#if 0
                        if ( (*dlip)->dli_oc == oc ) {
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "\"dynlist-attrset <oc> <URL-ad> [<member-ad>]\": "
@@ -785,6 +790,7 @@ dynlist_db_config(
                                        fname, lineno, oc->soc_cname.bv_val );
                                return 1;
                        }
+#endif
 
                        if ( (*dlip)->dli_ad == ad ) {
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
@@ -870,6 +876,8 @@ dynlist_db_config(
                for ( dlip = (dynlist_info_t **)&on->on_bi.bi_private;
                        *dlip; dlip = &(*dlip)->dli_next )
                {
+#if 0
+                       /* The check on objectClass may be relaxed */
                        if ( (*dlip)->dli_oc == oc ) {
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "\"dynlist-attrpair <member-ad> <URL-ad>\": "
@@ -877,6 +885,7 @@ dynlist_db_config(
                                        fname, lineno, oc->soc_cname.bv_val );
                                return 1;
                        }
+#endif
 
                        if ( (*dlip)->dli_ad == ad ) {
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
@@ -1107,6 +1116,8 @@ dl_cfgen( ConfigArgs *c )
                for ( dlip = (dynlist_info_t **)&on->on_bi.bi_private;
                        *dlip; dlip = &(*dlip)->dli_next )
                {
+                       /* The check on objectClass may be relaxed */
+#if 0
                        if ( (*dlip)->dli_oc == oc ) {
                                snprintf( c->msg, sizeof( c->msg ),
                                        "\"dynlist-attrset <oc> <URL-ad> [<member-ad>]\": "
@@ -1116,6 +1127,7 @@ dl_cfgen( ConfigArgs *c )
                                        c->log, c->msg, 0 );
                                return 1;
                        }
+#endif
 
                        if ( (*dlip)->dli_ad == ad ) {
                                snprintf( c->msg, sizeof( c->msg ),
@@ -1234,6 +1246,8 @@ dl_cfgen( ConfigArgs *c )
                for ( dlip = (dynlist_info_t **)&on->on_bi.bi_private;
                        *dlip; dlip = &(*dlip)->dli_next )
                {
+                       /* The check on objectClass may be relaxed */
+#if 0
                        if ( (*dlip)->dli_oc == oc ) {
                                snprintf( c->msg, sizeof( c->msg ),
                                        "\"dynlist-attrpair <member-ad> <URL-ad>\": "
@@ -1243,6 +1257,7 @@ dl_cfgen( ConfigArgs *c )
                                        c->log, c->msg, 0 );
                                return 1;
                        }
+#endif
 
                        if ( (*dlip)->dli_ad == ad ) {
                                snprintf( c->msg, sizeof( c->msg ),