]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#8245 Do not try to release a NULL entry
authorOndřej Kuzník <ondra@mistotebe.net>
Fri, 10 Jun 2022 08:39:18 +0000 (09:39 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 23 Jun 2022 18:46:44 +0000 (18:46 +0000)
servers/slapd/overlays/unique.c

index 952c1edf57aecd9d920cffadb35cf7ee248751ed..7a7c8fb540d1e2ba2cab651a82313edc98ce86fb 100644 (file)
@@ -1225,13 +1225,15 @@ unique_modify(
                return rc;
        }
 
-       if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) || (
-                       get_relax(op) > SLAP_CONTROL_IGNORED
-                       && overlay_entry_get_ov(op, &op->o_req_ndn, NULL, NULL, 0, &e, on) == LDAP_SUCCESS
-                       && e
-                       && access_allowed( op, e,
-                               slap_schema.si_ad_entry, NULL,
-                               ACL_MANAGE, NULL ) ) ) {
+       if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) {
+               return rc;
+       }
+       if ( get_relax(op) > SLAP_CONTROL_IGNORED
+               && overlay_entry_get_ov( op, &op->o_req_ndn, NULL, NULL, 0, &e, on ) == LDAP_SUCCESS
+               && e
+               && access_allowed( op, e,
+                       slap_schema.si_ad_entry, NULL,
+                       ACL_MANAGE, NULL ) ) {
                overlay_entry_release_ov( op, e, 0, on );
                return rc;
        }
@@ -1363,13 +1365,15 @@ unique_modrdn(
        Debug(LDAP_DEBUG_TRACE, "==> unique_modrdn <%s> <%s>\n",
                op->o_req_dn.bv_val, op->orr_newrdn.bv_val );
 
-       if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) || (
-                       get_relax(op) > SLAP_CONTROL_IGNORED
-                       && overlay_entry_get_ov(op, &op->o_req_ndn, NULL, NULL, 0, &e, on) == LDAP_SUCCESS
-                       && e
-                       && access_allowed( op, e,
-                               slap_schema.si_ad_entry, NULL,
-                               ACL_MANAGE, NULL ) ) ) {
+       if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) {
+               return rc;
+       }
+       if ( get_relax(op) > SLAP_CONTROL_IGNORED
+               && overlay_entry_get_ov( op, &op->o_req_ndn, NULL, NULL, 0, &e, on ) == LDAP_SUCCESS
+               && e
+               && access_allowed( op, e,
+                       slap_schema.si_ad_entry, NULL,
+                       ACL_MANAGE, NULL ) ) {
                overlay_entry_release_ov( op, e, 0, on );
                return rc;
        }