summaryrefslogtreecommitdiff
path: root/source3/libsmb/samlogon_cache.c
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2007-03-28 10:00:42 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:18:58 -0500
commitcece5a62ae564a8f7f4eeb0e2376e04ff041bdd9 (patch)
treeb07489a365a7031916338427a7d78c267bd5a348 /source3/libsmb/samlogon_cache.c
parente9157961d6c89318de4c7ff5a700aed640d91d92 (diff)
downloadsamba-cece5a62ae564a8f7f4eeb0e2376e04ff041bdd9.tar.gz
samba-cece5a62ae564a8f7f4eeb0e2376e04ff041bdd9.tar.bz2
samba-cece5a62ae564a8f7f4eeb0e2376e04ff041bdd9.zip
r21998: Fix tdb keynames in netsamlogon_clear_cached_user().
No point in deleting U/DOMAIN/RID and UG/DOMAIN/RID keys if we only store U/SID and UG/SID keys :-) Next we need to verify the need of calling netsamlogon_clear_cached_user() at all. Guenther (This used to be commit 78d13f14672b65c2d4798ce94322e945334eea62)
Diffstat (limited to 'source3/libsmb/samlogon_cache.c')
-rw-r--r--source3/libsmb/samlogon_cache.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/source3/libsmb/samlogon_cache.c b/source3/libsmb/samlogon_cache.c
index 270ad27deb..e82ee8dbb8 100644
--- a/source3/libsmb/samlogon_cache.c
+++ b/source3/libsmb/samlogon_cache.c
@@ -59,9 +59,10 @@ BOOL netsamlogon_cache_shutdown(void)
***********************************************************************/
void netsamlogon_clear_cached_user(TDB_CONTEXT *tdb, NET_USER_INFO_3 *user)
{
- fstring domain;
TDB_DATA key;
BOOL got_tdb = False;
+ DOM_SID sid;
+ fstring key_str, sid_string;
/* We may need to call this function from smbd which will not have
winbindd_cache.tdb open. Open the tdb if a NULL is passed. */
@@ -77,29 +78,24 @@ void netsamlogon_clear_cached_user(TDB_CONTEXT *tdb, NET_USER_INFO_3 *user)
got_tdb = True;
}
- unistr2_to_ascii(domain, &user->uni_logon_dom, sizeof(domain) - 1);
+ sid_copy(&sid, &user->dom_sid.sid);
+ sid_append_rid(&sid, user->user_rid);
- /* Clear U/DOMAIN/RID cache entry */
+ /* Clear U/SID cache entry */
- asprintf(&key.dptr, "U/%s/%d", domain, user->user_rid);
- key.dsize = strlen(key.dptr) - 1; /* keys are not NULL terminated */
+ fstr_sprintf(key_str, "U/%s", sid_to_string(sid_string, &sid));
- DEBUG(10, ("netsamlogon_clear_cached_user: clearing %s\n", key.dptr));
-
- tdb_delete(tdb, key);
+ DEBUG(10, ("netsamlogon_clear_cached_user: clearing %s\n", key_str));
- SAFE_FREE(key.dptr);
+ tdb_delete(tdb, string_tdb_data(key_str));
- /* Clear UG/DOMAIN/RID cache entry */
+ /* Clear UG/SID cache entry */
- asprintf(&key.dptr, "UG/%s/%d", domain, user->user_rid);
- key.dsize = strlen(key.dptr) - 1; /* keys are not NULL terminated */
+ fstr_sprintf(key_str, "UG/%s", sid_to_string(sid_string, &sid));
DEBUG(10, ("netsamlogon_clear_cached_user: clearing %s\n", key.dptr));
- tdb_delete(tdb, key);
-
- SAFE_FREE(key.dptr);
+ tdb_delete(tdb, string_tdb_data(key_str));
if (got_tdb)
tdb_close(tdb);