From d8966dcd7e88df9817c81434056628c0beff21e3 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 15 Dec 2005 20:29:02 +0000 Subject: r12268: Use transactions to ensure that the schannel db is consistant. Andrew Bartlett (This used to be commit 949137e3122a3163a9fc923a418633a791364afe) --- source4/auth/gensec/schannel_state.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'source4/auth/gensec') diff --git a/source4/auth/gensec/schannel_state.c b/source4/auth/gensec/schannel_state.c index 8f9a8ef6b5..edc7b8445b 100644 --- a/source4/auth/gensec/schannel_state.c +++ b/source4/auth/gensec/schannel_state.c @@ -122,6 +122,14 @@ NTSTATUS schannel_store_session_key(TALLOC_CTX *mem_ctx, ldb_msg_add_string(msg, "flatname", creds->domain); samdb_msg_add_dom_sid(ldb, mem_ctx, msg, "objectSid", creds->sid); + ret = ldb_transaction_start(ldb); + if (ret != 0) { + DEBUG(0,("Unable to start transaction to add %s to session key db - %s\n", + ldb_dn_linearize(msg, msg->dn), ldb_errstring(ldb))); + talloc_free(ldb); + return NT_STATUS_INTERNAL_DB_CORRUPTION; + } + ldb_delete(ldb, msg->dn); ret = ldb_add(ldb, msg); @@ -133,6 +141,15 @@ NTSTATUS schannel_store_session_key(TALLOC_CTX *mem_ctx, return NT_STATUS_INTERNAL_DB_CORRUPTION; } + ret = ldb_transaction_commit(ldb); + + if (ret != 0) { + DEBUG(0,("Unable to commit adding %s to session key db - %s\n", + ldb_dn_linearize(msg, msg->dn), ldb_errstring(ldb))); + talloc_free(ldb); + return NT_STATUS_INTERNAL_DB_CORRUPTION; + } + talloc_free(ldb); return NT_STATUS_OK; -- cgit