From 6b25126f2088c4a0c609512a8bf5b2f6a1983787 Mon Sep 17 00:00:00 2001 From: Noriko Hosoi Date: Wed, 1 Jul 2015 18:16:20 -0700 Subject: [PATCH 1/2] Ticket #48212 - Dynamic nsMatchingRule changes had no effect on the attrinfo thus following reindexing, as well. Description: When nsMatchingRule was dynamically updated in an index entry, the value was set to the configuration but was not applied to the attribute info. On-line reindexing following the nsMatchingRule change actually ignored the setting. On the other hand, the standalone utility dbverify independently picked up the nsMatchingRule from the configuration and generated the attribute info, which expected the index reindexed based upon the new nsMatchingRule. But it was actually not and dbverify reported the index corruption. This patch applies the changes to the attribute info when nsMatchingRule is modified. --- ldap/servers/slapd/back-ldbm/ldbm_attr.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ldap/servers/slapd/back-ldbm/ldbm_attr.c b/ldap/servers/slapd/back-ldbm/ldbm_attr.c index 62ed6e1..092b6b5 100644 --- a/ldap/servers/slapd/back-ldbm/ldbm_attr.c +++ b/ldap/servers/slapd/back-ldbm/ldbm_attr.c @@ -127,7 +127,16 @@ ainfo_dup( attrinfo_delete_idlistinfo(&a->ai_idlistinfo); a->ai_idlistinfo = b->ai_idlistinfo; b->ai_idlistinfo = NULL; - + + /* copy cmp functions and substr lengths */ + a->ai_key_cmp_fn = b->ai_key_cmp_fn; + a->ai_dup_cmp_fn = b->ai_dup_cmp_fn; + if (b->ai_substr_lens) { + size_t substrlen = sizeof(int) * INDEX_SUBSTRLEN; + a->ai_substr_lens = (int *)slapi_ch_calloc(1, substrlen); + memcpy(a->ai_substr_lens, b->ai_substr_lens, substrlen); + } + return( 1 ); } -- 1.9.3