[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#3707) An unknown attribute in presence filter evaluates to (?=false) instead of (?=undefined)



Kurt@OpenLDAP.org wrote:

>At 02:51 AM 5/5/2005, ando@sys-net.it wrote:
>  
>
>>Full_Name: Pierangelo Masarati
>>Version: HEAD/2.3/2.2
>>OS: Linux
>>URL: ftp://ftp.openldap.org/incoming/
>>Submission from: (NULL) (131.175.154.56)
>>Submitted by: ando
>>
>>
>>An undefined attribute in a presence filter, e.g. "(undefined=*)", evaluates to
>>"(?=false)", while in other filters, e.g. equality "(undefined=something)" it
>>evaluates to "(?=undefined)".  If there isn't any rationale behind it, I'd
>>evaluate it to "(?=undefined)" as well, at least for consistency.
>>    
>>
>
>Though I disagree with the rationale behind the RFC 2251
>requirement, the rationale for this slapd(8) behavior is
>the RFC 2251 requirement.
>     The present match evaluates to TRUE where there is an attribute or
>     subtype of the specified attribute description present in an entry,
>     and FALSE otherwise (including a presence test with an unrecognized
>     attribute description.)
>
>I disagree as 'undefined' may be an unknown alias for a
>present attribute description.
>  
>
My intention was to use "undefined" as a placeholder for an undefined 
attributeDescription; let's say "(1.1=*)" vs. "(1.1=something)".  I 
missed that bit in RFC2251, but I suspected a rationale behind the 
current implementation.

This is making forwarding of absolute filters by back-ldap a bit more 
tricky.  As such, I suggest the strings "(?=true)" and "(?=false)" in 
slapd's internal filter representation be replaced by the corresponding 
absoluteFilter representations "(&)" and "(|)", assuming they're simply 
an internal string representation, since I didn0t find any mention of 
them in <draft-zeilenga-ldap-t-f>.  "(?=undefined)" and "(?=error)" do 
not require modifications.

I can work this issue around as in slapo-rwm and back-meta, but this 
would require yet another filter2bv conversion.

p.


    SysNet - via Dossi,8 27100 Pavia Tel: +390382573859 Fax: +390382476497