r19196: merge from samba3:
authorStefan Metzmacher <metze@samba.org>
Mon, 9 Oct 2006 09:56:13 +0000 (09:56 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:20:52 +0000 (14:20 -0500)
pass always a mem_ctx to functions and a ldb_context where needed

metze
(This used to be commit 67a6a41ba3af840cd8226de73576a90ecf602caa)

source4/lib/ldb/common/attrib_handlers.c
source4/lib/ldb/common/ldb_dn.c
source4/lib/ldb/common/ldb_match.c
source4/lib/ldb/common/ldb_modules.c
source4/lib/ldb/include/ldb.h
source4/lib/ldb/ldb_tdb/ldb_tdb.c

index df70ca1b510e98050642058c1c7dfbb8ee0271a1..07a0ec6eb8889e108189cff1866151f81f77107f 100644 (file)
@@ -230,7 +230,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;
        }
@@ -258,10 +258,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;
index f10e2812f1dc1394b1bdc59e255c94fa3507ac35..d035b0d3c2e21ed471b4b21e66bb07faf9cd7513 100644 (file)
@@ -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;
        }
@@ -599,14 +599,17 @@ struct ldb_dn *ldb_dn_casefold(struct ldb_context *ldb, const struct ldb_dn *edn
                const struct ldb_attrib_handler *h;
 
                memset(&dc, 0, sizeof(dc));
-               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;
                }
@@ -617,7 +620,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;
 
@@ -626,13 +629,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;
@@ -641,11 +644,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);
index 64e52d285dfb26206b489ef1d38d31f77f874897..1fd12da7f3917c8b4172b1fdf055795c60874051 100644 (file)
@@ -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;
index 3b0009ae472c9f7cb0f067756b8aef711dcc2bb8..d627f3b9fa18315fe62fa7ed0294bb0167073d1f 100644 (file)
 #define LDB_MODULE_PREFIX      "modules:"
 #define LDB_MODULE_PREFIX_LEN  8
 
-static char *talloc_strdup_no_spaces(struct ldb_context *ldb, const char *string)
+static char *ldb_modules_strdup_no_spaces(TALLOC_CTX *mem_ctx, const char *string)
 {
        int i, len;
        char *trimmed;
 
-       trimmed = talloc_strdup(ldb, string);
+       trimmed = talloc_strdup(mem_ctx, string);
        if (!trimmed) {
-               ldb_debug(ldb, LDB_DEBUG_FATAL, "Out of Memory in talloc_strdup_trim_spaces()\n");
                return NULL;
        }
 
@@ -81,9 +80,9 @@ const char **ldb_modules_list_from_string(struct ldb_context *ldb, TALLOC_CTX *m
        int i;
 
        /* spaces not admitted */
-       modstr = talloc_strdup_no_spaces((struct ldb_context *)mem_ctx,
-                                        string);
+       modstr = ldb_modules_strdup_no_spaces(mem_ctx, string);
        if ( ! modstr) {
+               ldb_debug(ldb, LDB_DEBUG_FATAL, "Out of Memory in ldb_modules_strdup_no_spaces()\n");
                return NULL;
        }
 
index 82da9df0ddbd244a2e25efb2e45e8dd2ec5aa210..d2f3bd53d3fff4b732cdf894ed273f29a1839a4d 100644 (file)
@@ -1146,11 +1146,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);
index 171752d106efae86250506da3714b5663480edbc..608120e3a756ce3f484ce4c638a4cd27b319c0a5 100644 (file)
@@ -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;
        }