summaryrefslogtreecommitdiff
path: root/source3/passdb
diff options
context:
space:
mode:
Diffstat (limited to 'source3/passdb')
-rw-r--r--source3/passdb/machine_sid.c7
-rw-r--r--source3/passdb/secrets.c8
2 files changed, 14 insertions, 1 deletions
diff --git a/source3/passdb/machine_sid.c b/source3/passdb/machine_sid.c
index 4e7476781c..1fb3569f76 100644
--- a/source3/passdb/machine_sid.c
+++ b/source3/passdb/machine_sid.c
@@ -198,3 +198,10 @@ DOM_SID *get_global_sam_sid(void)
return global_sam_sid;
}
+/**
+ * Force get_global_sam_sid to requery the backends
+ */
+void reset_global_sam_sid()
+{
+ SAFE_FREE(global_sam_sid);
+}
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c
index 7317a4cf06..7531435e84 100644
--- a/source3/passdb/secrets.c
+++ b/source3/passdb/secrets.c
@@ -99,10 +99,16 @@ BOOL secrets_delete(const char *key)
BOOL secrets_store_domain_sid(const char *domain, const DOM_SID *sid)
{
fstring key;
+ BOOL ret;
slprintf(key, sizeof(key)-1, "%s/%s", SECRETS_DOMAIN_SID, domain);
strupper_m(key);
- return secrets_store(key, sid, sizeof(DOM_SID));
+ ret = secrets_store(key, sid, sizeof(DOM_SID));
+
+ /* Force a re-query, in case we modified our domain */
+ if (ret)
+ reset_global_sam_sid();
+ return ret;
}
BOOL secrets_fetch_domain_sid(const char *domain, DOM_SID *sid)