]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
dbwrap_tdb: Return correct error from db_tdb_storev()
authorVolker Lendecke <vl@samba.org>
Wed, 9 Oct 2019 15:17:07 +0000 (17:17 +0200)
committerJeremy Allison <jra@samba.org>
Fri, 22 Nov 2019 23:57:46 +0000 (23:57 +0000)
Don't lose information to NT_STATUS_UNSUCCESSFUL

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/dbwrap/dbwrap_tdb.c

index c7da7eef9a0c786d2d808d8fd138c869f781962a..ed20f88527867fbb9648806d64ce7956e8a7c338 100644 (file)
@@ -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)