From 54c1f469084ccd60291ee0f3da4cad33eabbb92d Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Fri, 30 Jan 2009 20:07:40 +0000
Subject: [PATCH] ITS#5912

---
 CHANGES                        | 1 +
 servers/slapd/back-ldap/init.c | 5 ++++-
 servers/slapd/back-meta/init.c | 5 ++++-
 servers/slapd/modify.c         | 1 +
 4 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/CHANGES b/CHANGES
index 4bb30cc618..37facb64de 100644
--- a/CHANGES
+++ b/CHANGES
@@ -32,6 +32,7 @@ OpenLDAP 2.4.14 Engineering
 	Fixed slapd-bdb/hdb trickle task usage (ITS#5864)
 	Fixed slapd-hdb idlcache with empty suffix (ITS#5859)
 	Fixed slapd-ldap idassert-bind validity checking (ITS#5863)
+	Fixed slapd-ldap/meta RFC4525 increment support (ITS#5912)
 	Fixed slapd-ldif numerous bugs (ITS#5408)
 	Fixed slapd-ldif rename on same DN (ITS#5319)
 	Fixed slapd-ldif deadlock (ITS#5329)
diff --git a/servers/slapd/back-ldap/init.c b/servers/slapd/back-ldap/init.c
index 93df94c28e..6c9979bd50 100644
--- a/servers/slapd/back-ldap/init.c
+++ b/servers/slapd/back-ldap/init.c
@@ -62,7 +62,10 @@ ldap_back_initialize( BackendInfo *bi )
 		 * and the entryTtl attribute */
 		SLAP_BFLAG_DYNAMIC |
 #endif /* LDAP_DYNAMIC_OBJECTS */
-		0;
+
+		/* back-ldap recognizes RFC4525 increment;
+		 * let the remote server complain, if needed (ITS#5912) */
+		SLAP_BFLAG_INCREMENT;
 
 	bi->bi_open = ldap_back_open;
 	bi->bi_config = 0;
diff --git a/servers/slapd/back-meta/init.c b/servers/slapd/back-meta/init.c
index 4d7d92195e..ab9df5687b 100644
--- a/servers/slapd/back-meta/init.c
+++ b/servers/slapd/back-meta/init.c
@@ -53,7 +53,10 @@ meta_back_initialize(
 		SLAP_BFLAG_DYNAMIC |
 #endif /* LDAP_DYNAMIC_OBJECTS */
 #endif
-		0;
+
+		/* back-meta recognizes RFC4525 increment;
+		 * let the remote server complain, if needed (ITS#5912) */
+		SLAP_BFLAG_INCREMENT;
 
 	bi->bi_open = meta_back_open;
 	bi->bi_config = 0;
diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c
index 115b4705ee..7adc30469c 100644
--- a/servers/slapd/modify.c
+++ b/servers/slapd/modify.c
@@ -268,6 +268,7 @@ fe_op_modify( Operation *op, SlapReply *rs )
 	if ( op->orm_increment && !SLAP_INCREMENT( op->o_bd ) ) {
 		send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
 			"modify/increment not supported in context" );
+		goto cleanup;
 	}
 
 	/*
-- 
GitLab