Fix bug spotted by Simo - don't use legacy if expired entry.
authorJeremy Allison <jra@samba.org>
Wed, 27 Aug 2008 01:05:34 +0000 (18:05 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 27 Aug 2008 01:05:34 +0000 (18:05 -0700)
Jeremy.
(This used to be commit a7bbd33139c5835cf32efdbe0ef187117699e3e4)

source3/passdb/lookup_sid.c

index a5e3362882043528842dfc4503bcd9c1a9203ebc..3861c8e229c9314263285ebada7e50ffe5658faa 100644 (file)
@@ -1296,7 +1296,7 @@ void uid_to_sid(DOM_SID *psid, uid_t uid)
        /* Check the winbindd cache directly. */
        ret = idmap_cache_find_uid2sid(uid, psid, &expired);
 
-       if (ret && is_null_sid(psid)) {
+       if (ret && !expired && is_null_sid(psid)) {
                /*
                 * Negative cache entry, we already asked.
                 * do legacy.
@@ -1342,7 +1342,7 @@ void gid_to_sid(DOM_SID *psid, gid_t gid)
        /* Check the winbindd cache directly. */
        ret = idmap_cache_find_gid2sid(gid, psid, &expired);
 
-       if (ret && is_null_sid(psid)) {
+       if (ret && !expired && is_null_sid(psid)) {
                /*
                 * Negative cache entry, we already asked.
                 * do legacy.
@@ -1405,7 +1405,7 @@ bool sid_to_uid(const DOM_SID *psid, uid_t *puid)
        /* Check the winbindd cache directly. */
        ret = idmap_cache_find_sid2uid(psid, puid, &expired);
 
-       if (ret && (*puid == (uid_t)-1)) {
+       if (ret && !expired && (*puid == (uid_t)-1)) {
                /*
                 * Negative cache entry, we already asked.
                 * do legacy.
@@ -1469,7 +1469,7 @@ bool sid_to_gid(const DOM_SID *psid, gid_t *pgid)
        /* Check the winbindd cache directly. */
        ret = idmap_cache_find_sid2gid(psid, pgid, &expired);
 
-       if (ret && (*pgid == (gid_t)-1)) {
+       if (ret && !expired && (*pgid == (gid_t)-1)) {
                /*
                 * Negative cache entry, we already asked.
                 * do legacy.