From 39ac9457a3d75a344b6ca41a7df3122eb9c5b26e Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 30 May 2012 16:50:06 +0200 Subject: [PATCH] lib/dbwrap: don't alter the record on failure in db_rbt_store() metze --- lib/dbwrap/dbwrap_rbt.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/dbwrap/dbwrap_rbt.c b/lib/dbwrap/dbwrap_rbt.c index a87b85fe276..2cc52b1da61 100644 --- a/lib/dbwrap/dbwrap_rbt.c +++ b/lib/dbwrap/dbwrap_rbt.c @@ -121,7 +121,17 @@ static NTSTATUS db_rbt_store(struct db_record *rec, TDB_DATA data, int flag) rec_priv->node->valuesize = data.dsize; return NT_STATUS_OK; } + } + + node = (struct db_rbt_node *)talloc_size(db_ctx, + offsetof(struct db_rbt_node, data) + rec->key.dsize + + data.dsize); + + if (node == NULL) { + return NT_STATUS_NO_MEMORY; + } + if (rec_priv->node != NULL) { /* * We need to delete the key from the tree and start fresh, * there's not enough space in the existing record @@ -135,15 +145,6 @@ static NTSTATUS db_rbt_store(struct db_record *rec, TDB_DATA data, int flag) */ } - node = (struct db_rbt_node *)talloc_size(db_ctx, - offsetof(struct db_rbt_node, data) + rec->key.dsize - + data.dsize); - - if (node == NULL) { - TALLOC_FREE(rec_priv->node); - return NT_STATUS_NO_MEMORY; - } - ZERO_STRUCT(node->rb_node); node->keysize = rec->key.dsize; -- 2.11.4.GIT