From 70818bd4e86ec0a63b2526de80d17167466c7890 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Tue, 20 May 2008 02:00:55 +0000
Subject: [PATCH] ITS#5506

---
 CHANGES                           | 1 +
 servers/slapd/overlays/syncprov.c | 5 ++++-
 servers/slapd/schema_init.c       | 2 ++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/CHANGES b/CHANGES
index 7dac98795d..0dd2884db9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ OpenLDAP 2.4.10 Engineering
 	Fixed slapd missing termination of integerFilter keys (ITS#5503)
 	Fixed slapd-ldap entry_get() op-dependent behavior (ITS#5513)
 	Fixed slapo-syncprov csn update with delta-syncrepl (ITS#5493)
+	Fixed slapo-syncprov op2.o_extra reset (ITS#5506)
 
 OpenLDAP 2.4.9 Release (2008/05/07)
 	Fixed libldap to use unsigned port (ITS#5436)
diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c
index 7bc5464ae6..01602a79fa 100644
--- a/servers/slapd/overlays/syncprov.c
+++ b/servers/slapd/overlays/syncprov.c
@@ -1224,8 +1224,11 @@ syncprov_matchops( Operation *op, opcookie *opc, int saveit )
 			}
 		}
 
-		if ( fc.fscope )
+		if ( fc.fscope ) {
 			op2 = *ss->s_op;
+			op2.o_hdr = op->o_hdr;
+			op2.o_extra = op->o_extra;
+		}
 
 		/* check if current o_req_dn is in scope and matches filter */
 		if ( fc.fscope && test_filter( &op2, e, ss->s_op->ors_filter ) ==
diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c
index ab82c9df50..44175b7501 100644
--- a/servers/slapd/schema_init.c
+++ b/servers/slapd/schema_init.c
@@ -2273,6 +2273,8 @@ integerFilter(
 
 	keys[0].bv_len = index_intlen;
 	keys[0].bv_val = slap_sl_malloc( index_intlen, ctx );
+	keys[1].bv_len = 0;
+	keys[1].bv_val = NULL;
 
 	iv.bv_len = value->bv_len < index_intlen_strlen + INDEX_INTLEN_CHOP-1
 		? value->bv_len : index_intlen_strlen + INDEX_INTLEN_CHOP-1;
-- 
GitLab