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;
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,
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;