]> 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)
committerHoward Chu <hyc@openldap.org>
Tue, 14 Jun 2022 21:52:18 +0000 (21:52 +0000)
servers/slapd/overlays/unique.c

index 9e8bbeabaaf23c70bd50c5361a89c41b9be5b353..e71fabfd2fea8a583860d0d13e55572f74a484b0 100644 (file)
@@ -1229,13 +1229,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;
        }
@@ -1367,13 +1369,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;
        }