openldap/backport-ITS-9781-Relax-refcount-assertion-for-referrals.patch
2022-11-08 13:51:53 +00:00

30 lines
1.2 KiB
Diff

From f4e74d51f5cb02769c02230d1d78692c859c5fb0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= <ondra@mistotebe.net>
Date: Wed, 19 Jan 2022 10:26:45 +0000
Subject: [PATCH] ITS#9781 Relax refcount assertion for referrals
---
libraries/libldap/request.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libraries/libldap/request.c b/libraries/libldap/request.c
index b72b875b4..95e402a70 100644
--- a/libraries/libldap/request.c
+++ b/libraries/libldap/request.c
@@ -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",
--
2.33.0