diff --git a/CHANGES b/CHANGES
index 98e5e3a807f6744bfacb1db095a52e16388571a0..53bd70faabe68eda8a4ff7c0a7f3d7f418b9d2d8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,7 @@
 OpenLDAP 2.4 Change Log
 
 OpenLDAP 2.4.21 Engineering
+	Fixed slapo-unique conflict with ppolicy (ITS#6270)
 
 OpenLDAP 2.4.20 Release (2009/11/27)
 	Fixed client tools with LDAP options (ITS#6283)
diff --git a/servers/slapd/overlays/unique.c b/servers/slapd/overlays/unique.c
index 62d27430c8e5eaebfbb916cf02d1084b76918391..42d6cf24c9c547636616edfdcf3bf024d6641081 100644
--- a/servers/slapd/overlays/unique.c
+++ b/servers/slapd/overlays/unique.c
@@ -1074,13 +1074,13 @@ unique_add(
 	      domain = domain->next )
 	{
 		unique_domain_uri *uri;
-		int ks = STRLENOF("(|)");
 
 		for ( uri = domain->uri;
 		      uri;
 		      uri = uri->next )
 		{
 			int len;
+			int ks = 0;
 
 			if ( uri->ndn.bv_val
 			     && !dnIsSuffix( &op->o_req_ndn, &uri->ndn ))
@@ -1117,7 +1117,7 @@ unique_add(
 			if ( !ks ) continue;
 
 			/* terminating NUL */
-			ks++;
+			ks += sizeof("(|)");
 
 			if ( uri->filter.bv_val && uri->filter.bv_len )
 				ks += uri->filter.bv_len + STRLENOF ("(&)");
@@ -1195,13 +1195,13 @@ unique_modify(
 	      domain = domain->next )
 	{
 		unique_domain_uri *uri;
-		int ks = STRLENOF("(|)");
 
 		for ( uri = domain->uri;
 		      uri;
 		      uri = uri->next )
 		{
 			int len;
+			int ks = 0;
 
 			if ( uri->ndn.bv_val
 			     && !dnIsSuffix( &op->o_req_ndn, &uri->ndn ))
@@ -1228,7 +1228,7 @@ unique_modify(
 			if ( !ks ) continue;
 
 			/* terminating NUL */
-			ks++;
+			ks += sizeof("(|)");
 
 			if ( uri->filter.bv_val && uri->filter.bv_len )
 				ks += uri->filter.bv_len + STRLENOF ("(&)");
@@ -1309,13 +1309,13 @@ unique_modrdn(
 	      domain = domain->next )
 	{
 		unique_domain_uri *uri;
-		int ks = STRLENOF("(|)");
 
 		for ( uri = domain->uri;
 		      uri;
 		      uri = uri->next )
 		{
 			int i, len;
+			int ks = 0;
 
 			if ( uri->ndn.bv_val
 			     && !dnIsSuffix( &op->o_req_ndn, &uri->ndn )
@@ -1364,7 +1364,7 @@ unique_modrdn(
 			if ( !ks ) continue;
 
 			/* terminating NUL */
-			ks++;
+			ks += sizeof("(|)");
 
 			if ( uri->filter.bv_val && uri->filter.bv_len )
 				ks += uri->filter.bv_len + STRLENOF ("(&)");