]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9781 Relax refcount assertion for referrals
authorOndřej Kuzník <ondra@mistotebe.net>
Wed, 19 Jan 2022 10:26:45 +0000 (10:26 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 19 Jan 2022 16:08:19 +0000 (16:08 +0000)
libraries/libldap/request.c

index b72b875b4f184f1ceb1a6952f23468258811f8d0..95e402a705a7284d624f97a4ff40c819e1729684 100644 (file)
@@ -1667,9 +1667,9 @@ ldap_find_request_by_msgid( LDAP *ld, ber_int_t msgid )
 
        lr = ldap_tavl_find( ld->ld_requests, &needle, ldap_req_cmp );
        if ( lr != NULL && lr->lr_status != LDAP_REQST_COMPLETED ) {
-               /* try_read1msg is the only user at the moment and we would free it
-                * multiple times if retrieving the request again */
-               assert( lr->lr_refcnt == 0 );
+               /* lr_refcnt is only negative when we removed it from ld_requests
+                * already, it is positive if we have sub-requests (referrals) */
+               assert( lr->lr_refcnt >= 0 );
                lr->lr_refcnt++;
                Debug3( LDAP_DEBUG_TRACE, "ldap_find_request_by_msgid: "
                                "msgid %d, lr %p lr->lr_refcnt = %d\n",