quanah@openldap.org wrote:
Full_Name: Quanah Gibson-Mount Version: 2.4.45 OS: N/A URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (47.208.148.239)
The pcache backend to slapd has the option for attr sets to note if an attribute that being cached is not defined in the local schema by prefixing it with "undef:", such as "undef:myattr". While this functionality works fine when pcache is using back-bdb or back-hdb, it does not work with back-mdb. In the case where back-mdb is used, an error will be logged if the hidden "pcaache" loglevel is used, but it will still attempt to answer queries (it will return no results, but with a success return code).
pcache uses slap_bv2tmp_ad() to register undef attributes. It looks like there's a bug here in that it doesn't initialize ad->ad_index. (bv2undef initializes this to zero.) Of course, that still doesn't change the fact that back-mdb requires schema to be fully defined.
At a minimum, the documentation needs to be updated to note this feature incompatibility. It would be additionally useful if either slapd would refuse to start if undef was used on top of back-mdb, or pcache would log an error that it could not answer the result from the cache, and fall back to doing a direct lookup.