summaryrefslogtreecommitdiff
path: root/source3/lib/ldb
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2006-10-07 10:24:16 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:15:19 -0500
commit628fc4b53a33b604e1c28d38ff5fd91459434814 (patch)
treedf0277e39f182ad771fe0a5e48314f3896d162a1 /source3/lib/ldb
parent7b84b133fe375e69817fe5c76089f67280507809 (diff)
downloadsamba-628fc4b53a33b604e1c28d38ff5fd91459434814.tar.gz
samba-628fc4b53a33b604e1c28d38ff5fd91459434814.tar.bz2
samba-628fc4b53a33b604e1c28d38ff5fd91459434814.zip
r19163: pass always a mem_ctx to functions and a ldb_context where needed
It would be nice if someone can merge that to samba4, otherwise I'll merge that to samba4 on monday metze (This used to be commit 6bc42f31ce294f2bd50ffbd536e1ee42607ef799)
Diffstat (limited to 'source3/lib/ldb')
-rw-r--r--source3/lib/ldb/common/attrib_handlers.c6
-rw-r--r--source3/lib/ldb/common/ldb_dn.c27
-rw-r--r--source3/lib/ldb/common/ldb_match.c2
-rw-r--r--source3/lib/ldb/include/ldb.h6
-rw-r--r--source3/lib/ldb/ldb_tdb/ldb_tdb.c2
5 files changed, 23 insertions, 20 deletions
diff --git a/source3/lib/ldb/common/attrib_handlers.c b/source3/lib/ldb/common/attrib_handlers.c
index 8e437964f4..c4c83c52a6 100644
--- a/source3/lib/ldb/common/attrib_handlers.c
+++ b/source3/lib/ldb/common/attrib_handlers.c
@@ -220,7 +220,7 @@ static int ldb_canonicalise_dn(struct ldb_context *ldb, void *mem_ctx,
out->length = 0;
out->data = NULL;
- dn = ldb_dn_explode_casefold(ldb, (char *)in->data);
+ dn = ldb_dn_explode_casefold(ldb, mem_ctx, (char *)in->data);
if (dn == NULL) {
return -1;
}
@@ -248,10 +248,10 @@ static int ldb_comparison_dn(struct ldb_context *ldb, void *mem_ctx,
struct ldb_dn *dn1 = NULL, *dn2 = NULL;
int ret;
- dn1 = ldb_dn_explode_casefold(mem_ctx, (char *)v1->data);
+ dn1 = ldb_dn_explode_casefold(ldb, mem_ctx, (char *)v1->data);
if (dn1 == NULL) return -1;
- dn2 = ldb_dn_explode_casefold(mem_ctx, (char *)v2->data);
+ dn2 = ldb_dn_explode_casefold(ldb, mem_ctx, (char *)v2->data);
if (dn2 == NULL) {
talloc_free(dn1);
return -1;
diff --git a/source3/lib/ldb/common/ldb_dn.c b/source3/lib/ldb/common/ldb_dn.c
index 5ff27d1a37..a63ff9c8e3 100644
--- a/source3/lib/ldb/common/ldb_dn.c
+++ b/source3/lib/ldb/common/ldb_dn.c
@@ -554,10 +554,10 @@ int ldb_dn_cmp(struct ldb_context *ldb, const char *dn0, const char *dn1)
if (dn0 == NULL || dn1 == NULL) return dn1 - dn0;
- edn0 = ldb_dn_explode_casefold(ldb, dn0);
+ edn0 = ldb_dn_explode_casefold(ldb, ldb, dn0);
if (edn0 == NULL) return 1;
- edn1 = ldb_dn_explode_casefold(ldb, dn1);
+ edn1 = ldb_dn_explode_casefold(ldb, ldb, dn1);
if (edn1 == NULL) {
talloc_free(edn0);
return -1;
@@ -575,14 +575,14 @@ int ldb_dn_cmp(struct ldb_context *ldb, const char *dn0, const char *dn1)
casefold a dn. We need to casefold the attribute names, and canonicalize
attribute values of case insensitive attributes.
*/
-struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, const struct ldb_dn *edn)
+struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn)
{
struct ldb_dn *cedn;
- int i;
+ int i, ret;
if (edn == NULL) return NULL;
- cedn = ldb_dn_new(ldb);
+ cedn = ldb_dn_new(mem_ctx);
if (!cedn) {
return NULL;
}
@@ -598,14 +598,17 @@ struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, const struct ldb_dn *edn
struct ldb_dn_component dc;
const struct ldb_attrib_handler *h;
- dc.name = ldb_attr_casefold(cedn, edn->components[i].name);
+ dc.name = ldb_attr_casefold(cedn->components, edn->components[i].name);
if (!dc.name) {
talloc_free(cedn);
return NULL;
}
h = ldb_attrib_handler(ldb, dc.name);
- if (h->canonicalise_fn(ldb, cedn, &(edn->components[i].value), &(dc.value)) != 0) {
+ ret = h->canonicalise_fn(ldb, cedn->components,
+ &(edn->components[i].value),
+ &(dc.value));
+ if (ret != 0) {
talloc_free(cedn);
return NULL;
}
@@ -616,7 +619,7 @@ struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, const struct ldb_dn *edn
return cedn;
}
-struct ldb_dn *ldb_dn_explode_casefold(struct ldb_context *ldb, const char *dn)
+struct ldb_dn *ldb_dn_explode_casefold(struct ldb_context *ldb, void *mem_ctx, const char *dn)
{
struct ldb_dn *edn, *cdn;
@@ -625,13 +628,13 @@ struct ldb_dn *ldb_dn_explode_casefold(struct ldb_context *ldb, const char *dn)
edn = ldb_dn_explode(ldb, dn);
if (edn == NULL) return NULL;
- cdn = ldb_dn_casefold(ldb, edn);
+ cdn = ldb_dn_casefold(ldb, mem_ctx, edn);
talloc_free(edn);
return cdn;
}
-char *ldb_dn_linearize_casefold(struct ldb_context *ldb, const struct ldb_dn *edn)
+char *ldb_dn_linearize_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn)
{
struct ldb_dn *cdn;
char *dn;
@@ -640,11 +643,11 @@ char *ldb_dn_linearize_casefold(struct ldb_context *ldb, const struct ldb_dn *ed
/* Special DNs */
if (ldb_dn_is_special(edn)) {
- dn = talloc_strdup(ldb, (char *)edn->components[0].value.data);
+ dn = talloc_strdup(mem_ctx, (char *)edn->components[0].value.data);
return dn;
}
- cdn = ldb_dn_casefold(ldb, edn);
+ cdn = ldb_dn_casefold(ldb, mem_ctx, edn);
if (cdn == NULL) return NULL;
dn = ldb_dn_linearize(ldb, cdn);
diff --git a/source3/lib/ldb/common/ldb_match.c b/source3/lib/ldb/common/ldb_match.c
index 64e52d285d..1fd12da7f3 100644
--- a/source3/lib/ldb/common/ldb_match.c
+++ b/source3/lib/ldb/common/ldb_match.c
@@ -149,7 +149,7 @@ static int ldb_match_equality(struct ldb_context *ldb,
int ret;
if (ldb_attr_dn(tree->u.equality.attr) == 0) {
- valuedn = ldb_dn_explode_casefold(ldb,
+ valuedn = ldb_dn_explode_casefold(ldb, ldb,
(char *)tree->u.equality.value.data);
if (valuedn == NULL) {
return 0;
diff --git a/source3/lib/ldb/include/ldb.h b/source3/lib/ldb/include/ldb.h
index cf4a1f282b..0761280d90 100644
--- a/source3/lib/ldb/include/ldb.h
+++ b/source3/lib/ldb/include/ldb.h
@@ -1145,11 +1145,11 @@ struct ldb_dn *ldb_dn_new(void *mem_ctx);
struct ldb_dn *ldb_dn_explode(void *mem_ctx, const char *dn);
struct ldb_dn *ldb_dn_explode_or_special(void *mem_ctx, const char *dn);
char *ldb_dn_linearize(void *mem_ctx, const struct ldb_dn *edn);
-char *ldb_dn_linearize_casefold(struct ldb_context *ldb, const struct ldb_dn *edn);
+char *ldb_dn_linearize_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn);
int ldb_dn_compare_base(struct ldb_context *ldb, const struct ldb_dn *base, const struct ldb_dn *dn);
int ldb_dn_compare(struct ldb_context *ldb, const struct ldb_dn *edn0, const struct ldb_dn *edn1);
-struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, const struct ldb_dn *edn);
-struct ldb_dn *ldb_dn_explode_casefold(struct ldb_context *ldb, const char *dn);
+struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, void *mem_ctx, const struct ldb_dn *edn);
+struct ldb_dn *ldb_dn_explode_casefold(struct ldb_context *ldb, void *mem_ctx, const char *dn);
struct ldb_dn *ldb_dn_copy_partial(void *mem_ctx, const struct ldb_dn *dn, int num_el);
struct ldb_dn *ldb_dn_copy(void *mem_ctx, const struct ldb_dn *dn);
struct ldb_dn *ldb_dn_get_parent(void *mem_ctx, const struct ldb_dn *dn);
diff --git a/source3/lib/ldb/ldb_tdb/ldb_tdb.c b/source3/lib/ldb/ldb_tdb/ldb_tdb.c
index 2dbcb7a811..9b502b5911 100644
--- a/source3/lib/ldb/ldb_tdb/ldb_tdb.c
+++ b/source3/lib/ldb/ldb_tdb/ldb_tdb.c
@@ -138,7 +138,7 @@ struct TDB_DATA ltdb_key(struct ldb_module *module, const struct ldb_dn *dn)
the rest
*/
- dn_folded = ldb_dn_linearize_casefold(ldb, dn);
+ dn_folded = ldb_dn_linearize_casefold(ldb, ldb, dn);
if (!dn_folded) {
goto failed;
}