[SCM] Samba Shared Repository - branch master updated
Andrew Bartlett
abartlet at samba.org
Thu Feb 7 22:47:02 MST 2013
The branch, master has been updated
via 554ba5e ldb: Add more data test data for one level test cases
via 9206eaa ldb: Add tests for the python api
via 2dc9c07 dsdb-operational: rework the loop for attribute removal
via 13b4815 ldb: Add more tests related to onelevel search
via 057896a ldb: use strncmp instead of strcmp when comparing the val part
via 87cbd94 ldb: make test output more readable
via 75f422f ldb-tdb: Document ltdb_index_add1 for more clarity
via 1e4e51f ldb-tdb: Fix a wrong parameter in ltdb_store
via 2470b0f ldb_tdb: raise level of full index scan message so that it starts to be really visible
via 1c0d348 dsdb-repl: make message more clearer
via 7222ee0 replmetadata: raise msg level for conflict resolution so that we don't polute logs
via fdca2f6 dsdb-repl: do not ask to add ref when doing getncchange for an exop
via 123954d dsdb-cracknames: Fix potential double free and memory leaks
from 64eba0a BUG 9633: Recursive mget should continue on EPERM.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 554ba5ebbf1d2e520883cfad6f8a2ed6eb9b2b0f
Author: Matthieu Patou <mat at matws.net>
Date: Tue Jan 8 00:09:32 2013 -0800
ldb: Add more data test data for one level test cases
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
Autobuild-Date(master): Fri Feb 8 06:46:40 CET 2013 on sn-devel-104
commit 9206eaaf5dbacade3ccc79d5900d4b242730b2f3
Author: Matthieu Patou <mat at matws.net>
Date: Tue Jan 8 00:28:03 2013 -0800
ldb: Add tests for the python api
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 2dc9c072cbb9b857bf52e229573d92c9a70bdcf6
Author: Matthieu Patou <mat at matws.net>
Date: Thu Dec 27 18:29:49 2012 -0800
dsdb-operational: rework the loop for attribute removal
Instead of doing ldb_in_list size(operational_remove) * (attrs_user +
attr_searched) * number of entries times to get the list of attributes to remove we construct this
list before the search and then use it for every entries.
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 13b481594585cdb079dcf9b8cf892f5094f44a16
Author: Matthieu Patou <mat at matws.net>
Date: Sat Dec 29 21:48:46 2012 -0800
ldb: Add more tests related to onelevel search
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 057896a090870ecec56ad0d2f960e55cef561e9e
Author: Matthieu Patou <mat at matws.net>
Date: Thu Dec 13 02:18:34 2012 -0800
ldb: use strncmp instead of strcmp when comparing the val part
val part of a DN's component is DATA_BLOB and nothing insure that it
will be finished by a '\0'
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 87cbd9414bab2f0a71d71b2c145c11ee71acd573
Author: Matthieu Patou <mat at matws.net>
Date: Sat Dec 29 16:42:28 2012 -0800
ldb: make test output more readable
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 75f422fe1df7dd04aa46d5c77cbeb43d101c3ad6
Author: Matthieu Patou <mat at matws.net>
Date: Mon Dec 17 01:45:30 2012 -0800
ldb-tdb: Document ltdb_index_add1 for more clarity
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 1e4e51f4c913a3821d7ecbd0842280240917ae38
Author: Matthieu Patou <mat at matws.net>
Date: Wed Dec 26 21:41:52 2012 -0800
ldb-tdb: Fix a wrong parameter in ltdb_store
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 2470b0fe5f3facf7bb41acbdb3028e2d5daaf8da
Author: Matthieu Patou <mat at matws.net>
Date: Sun Jan 6 22:17:26 2013 -0800
ldb_tdb: raise level of full index scan message so that it starts to be really visible
We don't want to have to set log level to 4 or 5 AND set the environment
variable to be able to see those log messages
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 1c0d3486a485cf01338dd5eff49ce847628d1b83
Author: Matthieu Patou <mat at matws.net>
Date: Wed Jan 23 11:33:30 2013 -0800
dsdb-repl: make message more clearer
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 7222ee0a245d340b526b8220d53c9ffd8c0c4dfa
Author: Matthieu Patou <mat at matws.net>
Date: Sat Jan 26 01:53:41 2013 -0800
replmetadata: raise msg level for conflict resolution so that we don't polute logs
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit fdca2f6ff47a389cb6300d3ea8327f8486de3c2a
Author: Matthieu Patou <mat at matws.net>
Date: Sat Jan 26 01:53:28 2013 -0800
dsdb-repl: do not ask to add ref when doing getncchange for an exop
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 123954d94ee783bd241c89fa53fc902312176875
Author: Matthieu Patou <mat at matws.net>
Date: Mon Dec 24 10:01:30 2012 -0800
dsdb-cracknames: Fix potential double free and memory leaks
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
-----------------------------------------------------------------------
Summary of changes:
lib/ldb/common/ldb_dn.c | 4 +-
lib/ldb/ldb_tdb/ldb_index.c | 23 ++++-
lib/ldb/ldb_tdb/ldb_search.c | 2 +-
lib/ldb/ldb_tdb/ldb_tdb.c | 3 +-
lib/ldb/tests/test-controls.sh | 6 +-
lib/ldb/tests/test-tdb-features.sh | 5 +
lib/ldb/tests/test-tdb.sh | 8 ++
lib/ldb/tests/test.ldif | 23 ++++
source4/dsdb/repl/drepl_out_helpers.c | 7 ++
source4/dsdb/repl/replicated_objects.c | 4 +-
source4/dsdb/samdb/cracknames.c | 6 +-
source4/dsdb/samdb/ldb_modules/operational.c | 131 ++++++++++++++++-------
source4/dsdb/samdb/ldb_modules/repl_meta_data.c | 4 +-
13 files changed, 169 insertions(+), 57 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/ldb/common/ldb_dn.c b/lib/ldb/common/ldb_dn.c
index b910489..14596f6 100644
--- a/lib/ldb/common/ldb_dn.c
+++ b/lib/ldb/common/ldb_dn.c
@@ -1097,7 +1097,7 @@ int ldb_dn_compare_base(struct ldb_dn *base, struct ldb_dn *dn)
if (b_vlen != dn_vlen) {
return b_vlen - dn_vlen;
}
- ret = strcmp(b_vdata, dn_vdata);
+ ret = strncmp(b_vdata, dn_vdata, b_vlen);
if (ret != 0) return ret;
n_base--;
@@ -1176,7 +1176,7 @@ int ldb_dn_compare(struct ldb_dn *dn0, struct ldb_dn *dn1)
if (dn0_vlen != dn1_vlen) {
return dn0_vlen - dn1_vlen;
}
- ret = strcmp(dn0_vdata, dn1_vdata);
+ ret = strncmp(dn0_vdata, dn1_vdata, dn0_vlen);
if (ret != 0) {
return ret;
}
diff --git a/lib/ldb/ldb_tdb/ldb_index.c b/lib/ldb/ldb_tdb/ldb_index.c
index d79417f..cf21092 100644
--- a/lib/ldb/ldb_tdb/ldb_index.c
+++ b/lib/ldb/ldb_tdb/ldb_index.c
@@ -1087,9 +1087,26 @@ int ltdb_search_indexed(struct ltdb_context *ac, uint32_t *match_count)
return ret;
}
-/*
- add an index entry for one message element
-*/
+/**
+ * @brief Add a DN in the index list of a given attribute name/value pair
+ *
+ * This function will add the DN in the index list for the index for
+ * the given attribute name and value.
+ *
+ * @param[in] module A ldb_module structure
+ *
+ * @param[in] dn The string representation of the DN as it
+ * will be stored in the index entry
+ *
+ * @param[in] el A ldb_message_element array, one of the entry
+ * referred by the v_idx is the attribute name and
+ * value pair which will be used to construct the
+ * index name
+ *
+ * @param[in] v_idx The index of element in the el array to use
+ *
+ * @return An ldb error code
+ */
static int ltdb_index_add1(struct ldb_module *module, const char *dn,
struct ldb_message_element *el, int v_idx)
{
diff --git a/lib/ldb/ldb_tdb/ldb_search.c b/lib/ldb/ldb_tdb/ldb_search.c
index 26296c7..1e7e7ea 100644
--- a/lib/ldb/ldb_tdb/ldb_search.c
+++ b/lib/ldb/ldb_tdb/ldb_search.c
@@ -606,7 +606,7 @@ int ltdb_search(struct ltdb_context *ctx)
/* useful for debugging when slow performance
* is caused by unindexed searches */
char *expression = ldb_filter_from_tree(ctx, ctx->tree);
- ldb_debug(ldb, LDB_DEBUG_WARNING, "ldb FULL SEARCH: %s SCOPE: %s DN: %s\n",
+ ldb_debug(ldb, LDB_DEBUG_ERROR, "ldb FULL SEARCH: %s SCOPE: %s DN: %s",
expression,
req->op.search.scope==LDB_SCOPE_BASE?"base":
req->op.search.scope==LDB_SCOPE_ONELEVEL?"one":
diff --git a/lib/ldb/ldb_tdb/ldb_tdb.c b/lib/ldb/ldb_tdb/ldb_tdb.c
index 860ee14..4fb1516 100644
--- a/lib/ldb/ldb_tdb/ldb_tdb.c
+++ b/lib/ldb/ldb_tdb/ldb_tdb.c
@@ -265,7 +265,8 @@ int ltdb_store(struct ldb_module *module, const struct ldb_message *msg, int flg
return LDB_ERR_OTHER;
}
- ret = ldb_pack_data(module, msg, (struct ldb_val *)&tdb_data);
+ ret = ldb_pack_data(ldb_module_get_ctx(module),
+ msg, (struct ldb_val *)&tdb_data);
if (ret == -1) {
talloc_free(tdb_key.dptr);
return LDB_ERR_OTHER;
diff --git a/lib/ldb/tests/test-controls.sh b/lib/ldb/tests/test-controls.sh
index 771085e..328ed29 100755
--- a/lib/ldb/tests/test-controls.sh
+++ b/lib/ldb/tests/test-controls.sh
@@ -27,13 +27,13 @@ EOF
$VALGRIND ldbsearch "(touchedBy=sample)" | grep "touchedBy: sample" || exit 1
# This action are expected to fails because the sample module return an error when presented the relax control
-cat <<EOF | $VALGRIND ldbadd --controls "relax:0" && exit 1
+cat <<EOF | $VALGRIND ldbadd --controls "relax:0" >/dev/null 2>&1 && exit 1
dn: dc=foobar
dc: foobar
someThing: someThingElse
EOF
-cat <<EOF | $VALGRIND ldbmodify --controls "relax:0" && exit 1
+cat <<EOF | $VALGRIND ldbmodify --controls "relax:0" >/dev/null 2>&1 && exit 1
dn: dc=bar
changetype: modify
replace someThing
@@ -41,5 +41,3 @@ someThing: someThingElseBetter
EOF
$VALGRIND ldbsearch --controls "bypassoperational:0" >/dev/null 2>&1 || exit 1
-
-set
diff --git a/lib/ldb/tests/test-tdb-features.sh b/lib/ldb/tests/test-tdb-features.sh
index 14437ff..59e61ee 100644
--- a/lib/ldb/tests/test-tdb-features.sh
+++ b/lib/ldb/tests/test-tdb-features.sh
@@ -154,6 +154,11 @@ dn: cn=three,cn=t1,cn=TEST
objectClass: oneclass
cn: three
test: one
+
+dn: cn=four,cn=three,cn=t1,cn=TEST
+objectClass: oneclass
+cn: four
+test: one
EOF
checkone 3 "cn=t1,cn=TEST" '(test=one)'
checkone 1 "cn=t1,cn=TEST" '(cn=two)'
diff --git a/lib/ldb/tests/test-tdb.sh b/lib/ldb/tests/test-tdb.sh
index 3310c81..82eef69 100755
--- a/lib/ldb/tests/test-tdb.sh
+++ b/lib/ldb/tests/test-tdb.sh
@@ -4,9 +4,12 @@ BINDIR=$1
if [ -n "$TEST_DATA_PREFIX" ]; then
LDB_URL="$TEST_DATA_PREFIX/tdbtest.ldb"
+ PYDESTDIR="$TEST_DATA_PREFIX"
else
LDB_URL="tdbtest.ldb"
+ PYDESTDIR="/tmp"
fi
+mkdir $PYDESTDIR/tmp
export LDB_URL
PATH=$BINDIR:$PATH
@@ -35,3 +38,8 @@ $VALGRIND ldbadd $LDBDIR/tests/init.ldif || exit 1
. $LDBDIR/tests/test-tdb-features.sh
. $LDBDIR/tests/test-controls.sh
+
+which python >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+ SELFTEST_PREFIX=$PYDESTDIR PYTHONPATH=$BINDIR/python python $LDBDIR/tests/python/api.py
+fi
diff --git a/lib/ldb/tests/test.ldif b/lib/ldb/tests/test.ldif
index fd37f00..c6189bf 100644
--- a/lib/ldb/tests/test.ldif
+++ b/lib/ldb/tests/test.ldif
@@ -195,6 +195,15 @@ description: All Alumni Assoc Staff
cn: Alumni Assoc Staff
objectclass: groupofnames
+dn: cn=Finance, cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=TEST
+member: cn=Manager,o=University of Michigan,c=TEST
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=TEST
+owner: cn=Manager,o=University of Michigan,c=TEST
+description: Finance group
+cn: Finance
+objectclass: groupofnames
+
dn: ou=Alumni Association,ou=People,o=University of Michigan,c=TEST
objectclass: organizationalUnit
ou: Alumni Association
@@ -415,3 +424,17 @@ objectclass: OpenLDAPperson
cn: Fred Bassett
sn: Bassett
uid: Bassett, Fred
+
+dn: o=ESCPI , o=CNAM,c=TEST
+objectclass: organizationalUnit
+o: ESCPI
+o: CNAM
+
+dn: o=ESCPI , uo=CNAM,c=TEST
+objectclass: organizationalUnit
+o: ESCPI
+uo: CNAM
+
+dn: cn=mat,o=ESCPI,o=CNAM,c=TEST
+objectclass: person
+cn: mat
diff --git a/source4/dsdb/repl/drepl_out_helpers.c b/source4/dsdb/repl/drepl_out_helpers.c
index 57205a8..8ddce32 100644
--- a/source4/dsdb/repl/drepl_out_helpers.c
+++ b/source4/dsdb/repl/drepl_out_helpers.c
@@ -439,6 +439,13 @@ static void dreplsrv_op_pull_source_get_changes_trigger(struct tevent_req *req)
replica_flags &= ~DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING;
}
}
+ if (state->op->extended_op != DRSUAPI_EXOP_NONE) {
+ /*
+ * If it's an exop never set the ADD_REF even if it's in
+ * repsFrom flags.
+ */
+ replica_flags &= ~DRSUAPI_DRS_ADD_REF;
+ }
/* is this a full resync of all objects? */
if (state->op->options & DRSUAPI_DRS_FULL_SYNC_NOW) {
diff --git a/source4/dsdb/repl/replicated_objects.c b/source4/dsdb/repl/replicated_objects.c
index 829c440..44c5de8 100644
--- a/source4/dsdb/repl/replicated_objects.c
+++ b/source4/dsdb/repl/replicated_objects.c
@@ -150,8 +150,8 @@ WERROR dsdb_repl_make_working_schema(struct ldb_context *ldb,
}
talloc_free(tmp_ctx);
- DEBUG(4,("Schema load pass %d: %d/%d of %d objects left to be converted.\n",
- pass_no, failed_obj_count, converted_obj_count, object_count));
+ DEBUG(4,("Schema load pass %d: converted %d, %d of %d objects left to be converted.\n",
+ pass_no, converted_obj_count, failed_obj_count, object_count));
pass_no++;
/* check if we converted any objects in this pass */
diff --git a/source4/dsdb/samdb/cracknames.c b/source4/dsdb/samdb/cracknames.c
index bcf82c6..15463a7 100644
--- a/source4/dsdb/samdb/cracknames.c
+++ b/source4/dsdb/samdb/cracknames.c
@@ -394,10 +394,10 @@ static WERROR get_format_functional_filtering_param(struct ldb_context *sam_ctx,
account = name;
s = strchr(account, '/');
+ talloc_free(domain_res);
while(s) {
s[0] = '\0';
s++;
- talloc_free(domain_res);
ldb_ret = ldb_search(sam_ctx, mem_ctx, &domain_res,
tmp_dn,
@@ -410,18 +410,20 @@ static WERROR get_format_functional_filtering_param(struct ldb_context *sam_ctx,
info1->status = DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR;
return WERR_OK;
}
+ talloc_free(tmp_dn);
switch (domain_res->count) {
case 1:
break;
case 0:
+ talloc_free(domain_res);
info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
return WERR_OK;
default:
+ talloc_free(domain_res);
info1->status = DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE;
return WERR_OK;
}
- talloc_free(tmp_dn);
tmp_dn = talloc_steal(mem_ctx, domain_res->msgs[0]->dn);
talloc_free(domain_res);
search_dn = tmp_dn;
diff --git a/source4/dsdb/samdb/ldb_modules/operational.c b/source4/dsdb/samdb/ldb_modules/operational.c
index b1122b3..a34dee0 100644
--- a/source4/dsdb/samdb/ldb_modules/operational.c
+++ b/source4/dsdb/samdb/ldb_modules/operational.c
@@ -667,10 +667,12 @@ enum op_remove {
Some of these are attributes that were once stored, but are now calculated
*/
-static const struct {
+struct op_attributes_operations {
const char *attr;
enum op_remove op;
-} operational_remove[] = {
+};
+
+static const struct op_attributes_operations operational_remove[] = {
{ "nTSecurityDescriptor", OPERATIONAL_SD_FLAGS },
{ "msDS-KeyVersionNumber", OPERATIONAL_REMOVE_UNLESS_CONTROL },
{ "parentGUID", OPERATIONAL_REMOVE_ALWAYS },
@@ -692,6 +694,8 @@ static int operational_search_post_process(struct ldb_module *module,
const char * const *attrs_from_user,
const char * const *attrs_searched_for,
struct op_controls_flags* controls_flags,
+ struct op_attributes_operations *list,
+ unsigned int list_size,
struct ldb_request *parent)
{
struct ldb_context *ldb;
@@ -701,43 +705,8 @@ static int operational_search_post_process(struct ldb_module *module,
ldb = ldb_module_get_ctx(module);
/* removed any attrs that should not be shown to the user */
- for (i=0; i<ARRAY_SIZE(operational_remove); i++) {
- switch (operational_remove[i].op) {
- case OPERATIONAL_REMOVE_UNASKED:
- if (ldb_attr_in_list(attrs_from_user, operational_remove[i].attr)) {
- continue;
- }
- if (ldb_attr_in_list(attrs_searched_for, operational_remove[i].attr)) {
- continue;
- }
- case OPERATIONAL_REMOVE_ALWAYS:
- ldb_msg_remove_attr(msg, operational_remove[i].attr);
- break;
- case OPERATIONAL_REMOVE_UNLESS_CONTROL:
- if (!check_keep_control_for_attribute(controls_flags, operational_remove[i].attr)) {
- ldb_msg_remove_attr(msg, operational_remove[i].attr);
- break;
- } else {
- continue;
- }
- case OPERATIONAL_SD_FLAGS:
- if (ldb_attr_in_list(attrs_from_user, operational_remove[i].attr)) {
- continue;
- }
- if (controls_flags->sd) {
- if (attrs_from_user == NULL) {
- continue;
- }
- if (attrs_from_user[0] == NULL) {
- continue;
- }
- if (ldb_attr_in_list(attrs_from_user, "*")) {
- continue;
- }
- }
- ldb_msg_remove_attr(msg, operational_remove[i].attr);
- break;
- }
+ for (i=0; i < list_size; i++) {
+ ldb_msg_remove_attr(msg, list[i].attr);
}
for (a=0;attrs_from_user && attrs_from_user[a];a++) {
@@ -802,6 +771,8 @@ struct operational_context {
enum ldb_scope scope;
const char * const *attrs;
struct op_controls_flags* controls_flags;
+ struct op_attributes_operations *list_operations;
+ unsigned int list_operations_size;
};
static int operational_callback(struct ldb_request *req, struct ldb_reply *ares)
@@ -829,7 +800,10 @@ static int operational_callback(struct ldb_request *req, struct ldb_reply *ares)
ac->scope,
ac->attrs,
req->op.search.attrs,
- ac->controls_flags, req);
+ ac->controls_flags,
+ ac->list_operations,
+ ac->list_operations_size,
+ req);
if (ret != 0) {
return ldb_module_done(ac->req, NULL, NULL,
LDB_ERR_OPERATIONS_ERROR);
@@ -849,6 +823,74 @@ static int operational_callback(struct ldb_request *req, struct ldb_reply *ares)
return LDB_SUCCESS;
}
+static struct op_attributes_operations* operation_get_op_list(TALLOC_CTX *ctx,
+ const char* const* attrs,
+ const char* const* searched_attrs,
+ struct op_controls_flags* controls_flags)
+{
+ int idx = 0;
+ int i;
+ struct op_attributes_operations *list = talloc_zero_array(ctx,
+ struct op_attributes_operations,
+ ARRAY_SIZE(operational_remove) + 1);
+
+ if (list == NULL) {
+ return NULL;
+ }
+
+ for (i=0; i<ARRAY_SIZE(operational_remove); i++) {
+ switch (operational_remove[i].op) {
+ case OPERATIONAL_REMOVE_UNASKED:
+ if (ldb_attr_in_list(attrs, operational_remove[i].attr)) {
+ continue;
+ }
+ if (ldb_attr_in_list(searched_attrs, operational_remove[i].attr)) {
+ continue;
+ }
+ list[idx].attr = operational_remove[i].attr;
+ list[idx].op = OPERATIONAL_REMOVE_UNASKED;
+ idx++;
+ break;
+
+ case OPERATIONAL_REMOVE_ALWAYS:
+ list[idx].attr = operational_remove[i].attr;
+ list[idx].op = OPERATIONAL_REMOVE_ALWAYS;
+ idx++;
+ break;
+
+ case OPERATIONAL_REMOVE_UNLESS_CONTROL:
+ if (!check_keep_control_for_attribute(controls_flags, operational_remove[i].attr)) {
+ list[idx].attr = operational_remove[i].attr;
+ list[idx].op = OPERATIONAL_REMOVE_UNLESS_CONTROL;
+ idx++;
+ }
+ break;
+
+ case OPERATIONAL_SD_FLAGS:
+ if (ldb_attr_in_list(attrs, operational_remove[i].attr)) {
+ continue;
+ }
+ if (controls_flags->sd) {
+ if (attrs == NULL) {
+ continue;
+ }
+ if (attrs[0] == NULL) {
+ continue;
+ }
+ if (ldb_attr_in_list(attrs, "*")) {
+ continue;
+ }
+ }
+ list[idx].attr = operational_remove[i].attr;
+ list[idx].op = OPERATIONAL_SD_FLAGS;
+ idx++;
+ break;
+ }
+ }
+
+ return list;
+}
+
static int operational_search(struct ldb_module *module, struct ldb_request *req)
{
struct ldb_context *ldb;
@@ -930,7 +972,16 @@ static int operational_search(struct ldb_module *module, struct ldb_request *req
}
}
}
-
+ ac->list_operations = operation_get_op_list(ac, ac->attrs,
+ search_attrs == NULL?req->op.search.attrs:search_attrs,
+ ac->controls_flags);
+ ac->list_operations_size = 0;
+ i = 0;
+
+ while (ac->list_operations && ac->list_operations[i].attr != NULL) {
+ i++;
+ }
+ ac->list_operations_size = i;
ret = ldb_build_search_req_ex(&down_req, ldb, ac,
req->op.search.base,
req->op.search.scope,
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
index 30b2a42..651cdf1 100644
--- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -3544,7 +3544,7 @@ static int replmd_op_possible_conflict_callback(struct ldb_request *req, struct
goto failed;
}
- DEBUG(1,(__location__ ": Resolving conflict record via incoming rename '%s' -> '%s'\n",
+ DEBUG(2,(__location__ ": Resolving conflict record via incoming rename '%s' -> '%s'\n",
ldb_dn_get_linearized(conflict_dn), ldb_dn_get_linearized(new_dn)));
/* re-submit the request, but with a different
@@ -3579,7 +3579,7 @@ static int replmd_op_possible_conflict_callback(struct ldb_request *req, struct
goto failed;
}
- DEBUG(1,(__location__ ": Resolving conflict record via existing rename '%s' -> '%s'\n",
+ DEBUG(2,(__location__ ": Resolving conflict record via existing rename '%s' -> '%s'\n",
ldb_dn_get_linearized(conflict_dn), ldb_dn_get_linearized(new_dn)));
ret = dsdb_module_rename(ar->module, conflict_dn, new_dn,
--
Samba Shared Repository
More information about the samba-cvs
mailing list