summaryrefslogtreecommitdiff
path: root/source3/passdb/secrets.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2008-03-10 15:48:04 +0100
committerVolker Lendecke <vl@samba.org>2008-03-10 21:08:45 +0100
commitd634ab06b34990b6eecee751435f2436ff76ec44 (patch)
tree840382f669c1916c8cfb663a3b4f4eb5a4732968 /source3/passdb/secrets.c
parentfe0e5d292df820d3c34cdcdfe0880941df9c1621 (diff)
downloadsamba-d634ab06b34990b6eecee751435f2436ff76ec44.tar.gz
samba-d634ab06b34990b6eecee751435f2436ff76ec44.tar.bz2
samba-d634ab06b34990b6eecee751435f2436ff76ec44.zip
Convert secrets_lock_trust_account_password to talloc
This is preparing the conversion of secrets.c to ctdb (This used to be commit 1307f0130c47b8d740d2b7afe7a5d8d1a655e2a2)
Diffstat (limited to 'source3/passdb/secrets.c')
-rw-r--r--source3/passdb/secrets.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c
index 2ef8f43988..2c0d648716 100644
--- a/source3/passdb/secrets.c
+++ b/source3/passdb/secrets.c
@@ -325,20 +325,36 @@ static char *trustdom_keystr(const char *domain)
return keystr;
}
+static int unlock_trust_account(char *domain)
+{
+ tdb_unlock_bystring(tdb, trust_keystr(domain));
+ return 0;
+}
+
/************************************************************************
Lock the trust password entry.
************************************************************************/
-bool secrets_lock_trust_account_password(const char *domain, bool dolock)
+void *secrets_get_trust_account_lock(TALLOC_CTX *mem_ctx, const char *domain)
{
- if (!tdb)
- return False;
+ char *result;
- if (dolock)
- return (tdb_lock_bystring(tdb, trust_keystr(domain)) == 0);
- else
- tdb_unlock_bystring(tdb, trust_keystr(domain));
- return True;
+ if (!secrets_init()) {
+ return NULL;
+ }
+
+ result = talloc_strdup(mem_ctx, domain);
+ if (result == NULL) {
+ return NULL;
+ }
+
+ if (tdb_lock_bystring(tdb, trust_keystr(domain)) != 0) {
+ TALLOC_FREE(result);
+ return NULL;
+ }
+
+ talloc_set_destructor(result, unlock_trust_account);
+ return result;
}
/************************************************************************