[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-5033-gc4d05e8

Jeremy Allison jra at samba.org
Tue Mar 3 00:51:18 GMT 2009


The branch, v3-3-test has been updated
       via  c4d05e8e1fc776dd9c528513346256cf35c9f226 (commit)
      from  3480224cef289ef0915787d735cd79adad4815fe (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit c4d05e8e1fc776dd9c528513346256cf35c9f226
Author: Dan Sledz <dan.sledz at isilon.com>
Date:   Mon Mar 2 16:42:37 2009 -0800

    It appears that the first time we see a uid/gid that winbind can't map,
    we end up returning the null sid instead of falling back to the legacy
    code.  Next time through the code we'll hit the negative cache and do
    the right thing, but we still fail the first time.
    
    If we fail the winbind id to sid mapping, call the legacy version.  This
    catches the case where we don't have a negative cache entry for the mapping.
    This is better than returning the NULL sid to the caller.

-----------------------------------------------------------------------

Summary of changes:
 source/passdb/lookup_sid.c |   36 ++++++++++++++++++++++--------------
 1 files changed, 22 insertions(+), 14 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/passdb/lookup_sid.c b/source/passdb/lookup_sid.c
index 3861c8e..ec42587 100644
--- a/source/passdb/lookup_sid.c
+++ b/source/passdb/lookup_sid.c
@@ -1308,13 +1308,17 @@ void uid_to_sid(DOM_SID *psid, uid_t uid)
 	if (!ret || expired) {
 		/* Not in cache. Ask winbindd. */
 		if (!winbind_uid_to_sid(psid, uid)) {
-			if (!winbind_ping()) {
-				legacy_uid_to_sid(psid, uid);
-				return;
-			}
-
-			DEBUG(5, ("uid_to_sid: winbind failed to find a sid for uid %u\n",
-				uid));
+			/*
+ 			 * We shouldn't return the NULL SID
+ 			 * here if winbind was running and
+ 			 * couldn't map, as winbind will have
+ 			 * added a negative entry that will
+ 			 * cause us to go though the
+ 			 * legacy_uid_to_sid()
+ 			 * function anyway in the case above
+ 			 * the next time we ask.
+ 			 */
+			legacy_uid_to_sid(psid, uid);
 			return;
 		}
 	}
@@ -1354,13 +1358,17 @@ void gid_to_sid(DOM_SID *psid, gid_t gid)
 	if (!ret || expired) {
 		/* Not in cache. Ask winbindd. */
 		if (!winbind_gid_to_sid(psid, gid)) {
-			if (!winbind_ping()) {
-				legacy_gid_to_sid(psid, gid);
-				return;
-			}
-
-			DEBUG(5, ("gid_to_sid: winbind failed to find a sid for gid %u\n",
-				gid));
+			/*
+ 			 * We shouldn't return the NULL SID
+ 			 * here if winbind was running and
+ 			 * couldn't map, as winbind will have
+ 			 * added a negative entry that will
+ 			 * cause us to go though the
+ 			 * legacy_gid_to_sid()
+ 			 * function anyway in the case above
+ 			 * the next time we ask.
+ 			 */
+			legacy_gid_to_sid(psid, gid);
 			return;
 		}
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list