(merge from 3.0)
authorAndrew Bartlett <abartlet@samba.org>
Sun, 8 Feb 2004 12:04:23 +0000 (12:04 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Sun, 8 Feb 2004 12:04:23 +0000 (12:04 +0000)
When we set a domain sid, force get_global_sam_sid() to do it's work again.

This should ensure that the value it returns is always consistant.

Andrew Bartlett
(This used to be commit fb13c61d4eee943e44632a0d1ba57b19602d67a4)

source3/Makefile.in
source3/passdb/machine_sid.c
source3/passdb/secrets.c

index 7fa0c14bd066470a4382822645c07f4460a8cda6..77ae8a0bddba9ebe72ffc0d1c6363208c3cb06ac 100644 (file)
@@ -211,7 +211,7 @@ LIBADS_OBJ = libads/ldap.o libads/ldap_printer.o libads/sasl.o \
 
 LIBADS_SERVER_OBJ = libads/util.o libads/kerberos_verify.o
 
-SECRETS_OBJ = passdb/secrets.o
+SECRETS_OBJ = passdb/secrets.o passdb/machine_sid.o 
 
 LIBNMB_OBJ = libsmb/unexpected.o libsmb/namecache.o libsmb/nmblib.o \
             libsmb/namequery.o libsmb/conncache.o 
@@ -293,7 +293,7 @@ GUMS_OBJ = sam/gums.o sam/gums_api.o sam/gums_helper.o @GUMS_STATIC@
 PASSDB_GET_SET_OBJ = passdb/pdb_get_set.o
 
 PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \
-               passdb/machine_sid.o passdb/util_sam_sid.o passdb/pdb_compat.o \
+               passdb/util_sam_sid.o passdb/pdb_compat.o \
                passdb/privileges.o passdb/lookup_sid.o @PDB_STATIC@ passdb/pdb_sql.o
 
 XML_OBJ = passdb/pdb_xml.o
index 4e7476781c8298ef55558087de9e3858dabfa8b3..1fb3569f763ff7cf70e8f4286e34f6bc280310e3 100644 (file)
@@ -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);
+}
index 7317a4cf06ee69f2d81747905134c0d2c40beb17..7531435e84f7ea5c7020b88a83206841836b2e36 100644 (file)
@@ -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)