Fixed ldapmodify printing error from ldap_result() (ITS#4812)
Fixed slapadd LDIF parsing (ITS#4817)
Fixed slapd syncrepl memory leaks (ITS#4805)
+ Fixed slapd dynacl/ACI compatibility with 2.1
Fixed slapd-bdb/hdb be_entry_get with aliases/referrals (ITS#4810)
Fixed slapd-ldap more response handling bugs (ITS#4782)
Fixed slapd-ldap C-API code tests (ITS#4808)
slap_access_t *mask;
int i, found;
- if ( attr == NULL || BER_BVISEMPTY( attr )
- || ber_bvstrcasecmp( attr, &aci_bv[ ACI_BV_ENTRY ] ) == 0 )
- {
- attr = &aci_bv[ ACI_BV_BR_ENTRY ];
+ if ( attr == NULL || BER_BVISEMPTY( attr ) ) {
+ attr = &aci_bv[ ACI_BV_ENTRY ];
}
found = 0;
This routine now supports scope={ENTRY,CHILDREN}
with the semantics:
- ENTRY applies to "entry" and "subtree";
- - CHILDREN aplies to "children" and "subtree"
+ - CHILDREN applies to "children" and "subtree"
*/
/* check that the aci has all 5 components */
* action := perms;attr[[;perms;attr]...]
* perms := perm[[,perm]...]
* perm := c|s|r|w|x
- * attr := attributeType|[all]
+ * attr := attributeType|"[all]"
* type := public|users|self|dnattr|group|role|set|set-ref|
* access_id|subtree|onelevel|children
*/
continue;
}
+ /* "[entry]" is tolerated for backward compatibility */
+ if ( ber_bvstrcasecmp( &bv, &aci_bv[ ACI_BV_BR_ENTRY ] ) == 0 ) {
+ continue;
+ }
+
if ( slap_bv2ad( &bv, &ad, &text ) != LDAP_SUCCESS ) {
return LDAP_INVALID_SYNTAX;
}
if ( ber_bvstrcasecmp( &bv, &aci_bv[ ACI_BV_BR_ALL ] ) == 0 ) {
bv = aci_bv[ ACI_BV_BR_ALL ];
+ /* "[entry]" is tolerated for backward compatibility */
+ } else if ( ber_bvstrcasecmp( &bv, &aci_bv[ ACI_BV_BR_ENTRY ] ) == 0 ) {
+ bv = aci_bv[ ACI_BV_ENTRY ];
+
} else {
AttributeDescription *ad = NULL;
const char *text = NULL;
freetype = 0;
char *ptr;
+ BER_BVZERO( out );
+
if ( BER_BVISEMPTY( val ) ) {
return LDAP_INVALID_SYNTAX;
}
out->bv_len =
oid.bv_len + STRLENOF( "#" )
+ scope.bv_len + STRLENOF( "#" )
- + rights.bv_len + STRLENOF( "#" )
+ + nrights.bv_len + STRLENOF( "#" )
+ ntype.bv_len + STRLENOF( "#" )
+ nsubject.bv_len;