https://bugs.openldap.org/show_bug.cgi?id=9737

          Issue ID: 9737
           Summary: ldapdelete unable to prune LDAP subentries
           Product: OpenLDAP
           Version: unspecified
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Keywords: needs_review
          Severity: normal
          Priority: ---
         Component: client tools
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

ldapdelete has a builtin capability to prune LDAP subentries (RFC 3672) by
utilizing LDAP subentries control when tracking children however currently that
logic does not work in the code and pruning always fails with 66 / 'not allowed
on non-leaf'. the test case for this is a normal parent entry which has LDAP
subentry type children underneath. the patch below addresses this issue.

>From ba29cbf20804d1c73cc0b5ab16549c4faba75a9e Mon Sep 17 00:00:00 2001
From: Anton Bobrov <[email protected]>
Date: Thu, 4 Nov 2021 17:27:34 +0100
Subject: [PATCH] ldapdelete unable to prune LDAP subentries

---
 clients/tools/ldapdelete.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c
index 8aa8e8c12..1a93aaadf 100644
--- a/clients/tools/ldapdelete.c
+++ b/clients/tools/ldapdelete.c
@@ -279,8 +279,13 @@ retry:;
        }

        rc = ldap_parse_result( ld, res, &code, &matcheddn, &text, &refs,
&ctrls, 1 );
+       if( rc != LDAP_SUCCESS ) {
+               fprintf( stderr, "%s: ldap_parse_result: %s (%d)\n",
+                       prog, ldap_err2string( rc ), rc );
+               return rc;
+       }

-       switch ( rc ) {
+       switch ( code ) {
        case LDAP_SUCCESS:
                break;

@@ -292,9 +297,7 @@ retry:;
                /* fallthru */

        default:
-               fprintf( stderr, "%s: ldap_parse_result: %s (%d)\n",
-                       prog, ldap_err2string( rc ), rc );
-               return rc;
+               break;
        }

        if( code != LDAP_SUCCESS ) {
-- 
2.31.1

-- 
You are receiving this mail because:
You are on the CC list for the issue.

Reply via email to