ldb/tdb: avoid casting TDB_DATA to struct ldb_val
authorStefan Metzmacher <metze@samba.org>
Wed, 11 Sep 2013 06:30:40 +0000 (08:30 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 25 Sep 2013 08:30:55 +0000 (10:30 +0200)
The structures are identical, but this generates compiler warnings.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb/ldb_tdb/ldb_index.c
lib/ldb/ldb_tdb/ldb_search.c
lib/ldb/ldb_tdb/ldb_tdb.c

index cf21092426185e82a072e0fe95a35834df02c4e8..32a4160763b23c05b0e0d61487c7f6db29ed8c03 100644 (file)
@@ -1514,6 +1514,7 @@ static int re_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void *
        const char *dn = NULL;
        int ret;
        TDB_DATA key2;
+       struct ldb_val unpack_val;
 
        ldb = ldb_module_get_ctx(module);
 
@@ -1527,7 +1528,9 @@ static int re_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void *
                return -1;
        }
 
-       ret = ldb_unpack_data(ldb, (struct ldb_val *)&data, msg);
+       unpack_val.data = data.dptr;
+       unpack_val.length = data.dsize;
+       ret = ldb_unpack_data(ldb, &unpack_val, msg);
        if (ret != 0) {
                ldb_debug(ldb, LDB_DEBUG_ERROR, "Invalid data for index %s\n",
                                                ldb_dn_get_linearized(msg->dn));
index 1e7e7ea82f05d49435675515c2d5dbdd594faf8f..cd2e2f1d72da7a029b286e14b9436a5b9af63cea 100644 (file)
@@ -246,7 +246,12 @@ static int ltdb_parse_data_unpack(TDB_DATA key, TDB_DATA data,
        struct ltdb_parse_data_unpack_ctx *ctx = private_data;
 
        struct ldb_context *ldb = ldb_module_get_ctx(ctx->module);
-       int ret = ldb_unpack_data(ldb, (struct ldb_val *)&data, ctx->msg);
+       struct ldb_val unpack_val;
+       int ret;
+
+       unpack_val.data = data.dptr;
+       unpack_val.length = data.dsize;
+       ret = ldb_unpack_data(ldb, &unpack_val, ctx->msg);
        if (ret == -1) {
                ldb_debug(ldb, LDB_DEBUG_ERROR, "Invalid data for index %*.*s\n",
                          (int)key.dsize, (int)key.dsize, key.dptr);
@@ -424,6 +429,7 @@ static int search_func(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, voi
        struct ldb_context *ldb;
        struct ltdb_context *ac;
        struct ldb_message *msg;
+       struct ldb_val unpack_val;
        int ret;
        bool matched;
 
@@ -441,7 +447,9 @@ static int search_func(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, voi
        }
 
        /* unpack the record */
-       ret = ldb_unpack_data(ldb, (struct ldb_val *)&data, msg);
+       unpack_val.data = data.dptr;
+       unpack_val.length = data.dsize;
+       ret = ldb_unpack_data(ldb, &unpack_val, msg);
        if (ret == -1) {
                talloc_free(msg);
                return -1;
index 30c58f5ee362b94669a195022f48d7f4993d94b3..1994f45e670e902f54e7b79397b8c5d7c3e63506 100644 (file)
@@ -263,6 +263,7 @@ int ltdb_store(struct ldb_module *module, const struct ldb_message *msg, int flg
 {
        void *data = ldb_module_get_private(module);
        struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
+       struct ldb_val val;
        TDB_DATA tdb_key, tdb_data;
        int ret = LDB_SUCCESS;
 
@@ -272,11 +273,13 @@ int ltdb_store(struct ldb_module *module, const struct ldb_message *msg, int flg
        }
 
        ret = ldb_pack_data(ldb_module_get_ctx(module),
-                           msg, (struct ldb_val *)&tdb_data);
+                           msg, &val);
        if (ret == -1) {
                talloc_free(tdb_key.dptr);
                return LDB_ERR_OTHER;
        }
+       tdb_data.dptr = val.data;
+       tdb_data.dsize = val.length;
 
        ret = tdb_store(ltdb->tdb, tdb_key, tdb_data, flgs);
        if (ret != 0) {
@@ -673,6 +676,7 @@ int ltdb_modify_internal(struct ldb_module *module,
        void *data = ldb_module_get_private(module);
        struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
        TDB_DATA tdb_key, tdb_data;
+       struct ldb_val unpack_val;
        struct ldb_message *msg2;
        unsigned int i, j, k;
        int ret = LDB_SUCCESS, idx;
@@ -701,7 +705,9 @@ int ltdb_modify_internal(struct ldb_module *module,
                goto done;
        }
 
-       ret = ldb_unpack_data(ldb_module_get_ctx(module), (struct ldb_val *)&tdb_data, msg2);
+       unpack_val.data = tdb_data.dptr;
+       unpack_val.length = tdb_data.dsize;
+       ret = ldb_unpack_data(ldb_module_get_ctx(module), &unpack_val, msg2);
        free(tdb_data.dptr);
        if (ret == -1) {
                ret = LDB_ERR_OTHER;