summaryrefslogtreecommitdiff
path: root/lib/dbwrap
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2019-10-09 17:17:07 +0200
committerJeremy Allison <jra@samba.org>2019-11-22 23:57:46 +0000
commita58633f64ea4e43dd3f860b4176ebae080a0a4f1 (patch)
treec69c82b10aeea110bec6c12e4beca4683c5b32ff /lib/dbwrap
parentbc2fc51abef823090f178de7e39890bdd91f9067 (diff)
downloadsamba-a58633f64ea4e43dd3f860b4176ebae080a0a4f1.tar.gz
dbwrap_tdb: Return correct error from db_tdb_storev()
Don't lose information to NT_STATUS_UNSUCCESSFUL Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'lib/dbwrap')
-rw-r--r--lib/dbwrap/dbwrap_tdb.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/dbwrap/dbwrap_tdb.c b/lib/dbwrap/dbwrap_tdb.c
index c7da7eef9a0..ed20f885278 100644
--- a/lib/dbwrap/dbwrap_tdb.c
+++ b/lib/dbwrap/dbwrap_tdb.c
@@ -294,6 +294,8 @@ static NTSTATUS db_tdb_storev(struct db_record *rec,
{
struct db_tdb_ctx *ctx = talloc_get_type_abort(rec->private_data,
struct db_tdb_ctx);
+ struct tdb_context *tdb = ctx->wtdb->tdb;
+ NTSTATUS status = NT_STATUS_OK;
int ret;
/*
@@ -302,8 +304,12 @@ static NTSTATUS db_tdb_storev(struct db_record *rec,
* anymore after it was stored.
*/
- ret = tdb_storev(ctx->wtdb->tdb, rec->key, dbufs, num_dbufs, flag);
- return (ret == 0) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+ ret = tdb_storev(tdb, rec->key, dbufs, num_dbufs, flag);
+ if (ret == -1) {
+ enum TDB_ERROR err = tdb_error(tdb);
+ status = map_nt_error_from_tdb(err);
+ }
+ return status;
}
static NTSTATUS db_tdb_delete(struct db_record *rec)