dbwrap: add enum dbwrap_req_state
[kai/samba-autobuild/.git] / lib / dbwrap / dbwrap_tdb.c
index 3e757ff6ad1abc631a26f1f50654e840e9e107d9..e12ec4405d604a5fe1698f424f4493a403aebd8b 100644 (file)
@@ -136,7 +136,7 @@ static struct db_record *db_tdb_fetch_locked_internal(
 
        talloc_set_destructor(state.result, db_tdb_record_destr);
 
-       state.result->private_data = talloc_reference(state.result, ctx);
+       state.result->private_data = ctx;
        state.result->store = db_tdb_store;
        state.result->delete_rec = db_tdb_delete;
 
@@ -388,12 +388,16 @@ static int db_tdb_transaction_cancel(struct db_context *db)
        return 0;
 }
 
-static void db_tdb_id(struct db_context *db, const uint8_t **id, size_t *idlen)
+static size_t db_tdb_id(struct db_context *db, uint8_t *id, size_t idlen)
 {
        struct db_tdb_ctx *db_ctx =
                talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
-       *id = (uint8_t *)&db_ctx->id;
-       *idlen = sizeof(db_ctx->id);
+
+       if (idlen >= sizeof(db_ctx->id)) {
+               memcpy(id, &db_ctx->id, sizeof(db_ctx->id));
+       }
+
+       return sizeof(db_ctx->id);
 }
 
 struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
@@ -401,7 +405,7 @@ struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
                               int hash_size, int tdb_flags,
                               int open_flags, mode_t mode,
                               enum dbwrap_lock_order lock_order,
-                              uint64_t dbrwap_flags)
+                              uint64_t dbwrap_flags)
 {
        struct db_context *result = NULL;
        struct db_tdb_ctx *db_tdb;