Issue 7343 - slapo-dynlist does not include attributes of an entry containing objectClass of the dynlist attrset
Summary: slapo-dynlist does not include attributes of an entry containing objectClass ...
Status: VERIFIED INVALID
Alias: None
Product: OpenLDAP
Classification: Unclassified
Component: overlays (show other issues)
Version: 2.4.31
Hardware: All All
: --- normal
Target Milestone: ---
Assignee: OpenLDAP project
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-08-01 21:00 UTC by openldap@stormcloud9.net
Modified: 2021-02-22 22:38 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description openldap@stormcloud9.net 2012-08-01 21:00:15 UTC
Full_Name: Patrick Hemmer
Version: 2.4.31
OS: RHEL6
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (98.211.220.204)


The issue is that if the entry being dynamically added to the parent entry has
the objectClass slapo-dynlist is configured to use (to determine expansion),
that entry is not dynamically added to the parent.
For example:
----
dn: olcOverlay={4}dynlist,olcDatabase={3}hdb,cn=config
objectClass: olcDynamicList
objectClass: olcOverlayConfig
olcOverlay: {4}dynlist
olcDlAttrSet: {0}labeledURIObject labeledURI
----
dn: cn=parent,dc=example,dc=com
objectClass: groupOfNames
objectClass: top
objectClass: labeledURIObject
cn: parent
member: uid=foo,dc=example,dc=com
labeledURI: ldap:///cn=child,dc=example,dc=com??base?(objectClass=*)

dn: cn=child,dc=example,dc=com
objectClass: groupOfNames
objectClass: top
objectClass: labeledURIObject
member: uid=bar,dc=example,dc=com
cn: child
----

In the above example, I would expect "member: uid=bar,dc=example,dc=com" to be
added to cn=parent,dc=example,dc=com, but it isn't.

Now the documentation clearly states recursion is not allowed, so if cn=child
were to have a 'labeledURI', this labeledURI would not be expanded. But this is
not what is being done here, cn=child has no labeledURI present. It also behaves
perfectly fine if I pull the "objetClass: labeledURIObject" off cn=child.

ldapsearch with objectClass labeledURIObject present on cn=child:
----
dn: cn=parent,dc=example,dc=com
objectClass: groupOfNames
objectClass: top
objectClass: labeledURIObject
cn: parent
member: uid=foo,dc=example,dc=com
labeledURI: ldap:///cn=child,dc=example,dc=com??base?(objectClass=*)
----

ldapsearch without objectClass labeledURIObject present on cn=child:
----
dn: cn=parent,dc=example,dc=com
objectClass: groupOfNames
objectClass: top
objectClass: labeledURIObject
cn: parent
cn: child
member: uid=foo,dc=example,dc=com
member: uid=bar,dc=example,dc=com
labeledURI: ldap:///cn=child,dc=example,dc=com??base?(objectClass=*)
----
Comment 1 Quanah Gibson-Mount 2017-04-12 21:10:44 UTC
moved from Incoming to Software Bugs
Comment 2 Quanah Gibson-Mount 2021-02-22 17:41:50 UTC
As documented recursion is not supported
Comment 3 openldap@stormcloud9.net 2021-02-22 17:47:04 UTC
I think you might have missed the second half of the issue.

========

Now the documentation clearly states recursion is not allowed, so if cn=child
were to have a 'labeledURI', this labeledURI would not be expanded. But this is
not what is being done here, cn=child has no labeledURI present. It also behaves
perfectly fine if I pull the "objetClass: labeledURIObject" off cn=child.

ldapsearch with objectClass labeledURIObject present on cn=child:
----
dn: cn=parent,dc=example,dc=com
objectClass: groupOfNames
objectClass: top
objectClass: labeledURIObject
cn: parent
member: uid=foo,dc=example,dc=com
labeledURI: ldap:///cn=child,dc=example,dc=com??base?(objectClass=*)
----

ldapsearch without objectClass labeledURIObject present on cn=child:
----
dn: cn=parent,dc=example,dc=com
objectClass: groupOfNames
objectClass: top
objectClass: labeledURIObject
cn: parent
cn: child
member: uid=foo,dc=example,dc=com
member: uid=bar,dc=example,dc=com
labeledURI: ldap:///cn=child,dc=example,dc=com??base?(objectClass=*)
----
Comment 4 Howard Chu 2021-02-22 22:38:59 UTC
(In reply to openldap@stormcloud9.net from comment #3)
> I think you might have missed the second half of the issue.
> 
> ========
> 
> Now the documentation clearly states recursion is not allowed, so if cn=child
> were to have a 'labeledURI', this labeledURI would not be expanded. But this
> is
> not what is being done here, cn=child has no labeledURI present.

Irrelevant.

> It also
> behaves
> perfectly fine if I pull the "objetClass: labeledURIObject" off cn=child.

Yes, because it is the objectClass: labeledURIobject that is checked
to determine whether a recursive query is occurring or not.