svn commit: samba r12365 - in trunk/source: nsswitch utils

jra at samba.org jra at samba.org
Mon Dec 19 18:51:37 GMT 2005


Author: jra
Date: 2005-12-19 18:51:36 +0000 (Mon, 19 Dec 2005)
New Revision: 12365

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12365

Log:
Fix up a couple of %d time_t arg warnings.
Remove local lookups from lookup name and sid, trust local LSA...
Jeremy.

Modified:
   trunk/source/nsswitch/winbindd_dual.c
   trunk/source/nsswitch/winbindd_pam.c
   trunk/source/utils/netlookup.c


Changeset:
Modified: trunk/source/nsswitch/winbindd_dual.c
===================================================================
--- trunk/source/nsswitch/winbindd_dual.c	2005-12-19 17:10:18 UTC (rev 12364)
+++ trunk/source/nsswitch/winbindd_dual.c	2005-12-19 18:51:36 UTC (rev 12365)
@@ -520,7 +520,7 @@
 
 		tp = get_timed_events_timeout(&t, (time_t)-1);
 		if (tp) {
-			DEBUG(11,("select will use timeout of %d seconds\n", tp->tv_sec));
+			DEBUG(11,("select will use timeout of %d seconds\n", (int)tp->tv_sec));
 		}
 
 		FD_ZERO(&read_fds);

Modified: trunk/source/nsswitch/winbindd_pam.c
===================================================================
--- trunk/source/nsswitch/winbindd_pam.c	2005-12-19 17:10:18 UTC (rev 12364)
+++ trunk/source/nsswitch/winbindd_pam.c	2005-12-19 18:51:36 UTC (rev 12365)
@@ -514,8 +514,8 @@
 	/* does http_timestring use heimdals libroken strftime?? - Guenther */
 	DEBUG(10,("got TGT for %s in %s (valid until: %s (%d), renewable till: %s (%d))\n", 
 		principal_s, cc, 
-		http_timestring(ticket_lifetime), ticket_lifetime, 
-		http_timestring(renewal_until), renewal_until));
+		http_timestring(ticket_lifetime), (int)ticket_lifetime, 
+		http_timestring(renewal_until), (int)renewal_until));
 
 	client_princ = talloc_strdup(state->mem_ctx, global_myname());
 	if (client_princ == NULL) {

Modified: trunk/source/utils/netlookup.c
===================================================================
--- trunk/source/utils/netlookup.c	2005-12-19 17:10:18 UTC (rev 12364)
+++ trunk/source/utils/netlookup.c	2005-12-19 18:51:36 UTC (rev 12365)
@@ -122,13 +122,16 @@
 
 /********************************************************
  Do a lookup_sids call to localhost.
+ Check if the local machine is authoritative for this sid. We can't
+ check if this is our SID as that's stored in the root-read-only
+ secrets.tdb.
+ The local smbd will also ask winbindd for us, so we don't have to.
 ********************************************************/
 
-static BOOL lookup_name_from_sid_via_localhost(TALLOC_CTX *ctx,
-						DOM_SID *psid,
-						const char **ppdomain,
-						const char **ppname,
-						uint32 *ptype)
+BOOL net_lookup_name_from_sid(TALLOC_CTX *ctx,
+				DOM_SID *psid,
+				const char **ppdomain,
+				const char **ppname)
 {
 	NTSTATUS nt_status;
 	struct con_struct *csp = NULL;
@@ -138,7 +141,6 @@
 
 	*ppdomain = NULL;
 	*ppname = NULL;
-	*ptype = (uint32)SID_NAME_UNKNOWN;
 
 	csp = create_cs(ctx);
 	if (csp == NULL) {
@@ -158,78 +160,41 @@
 
 	*ppdomain = domains[0];
 	*ppname = names[0];
-	*ptype = types[0];
-	
+	/* Don't care about type here. */
+
         /* Converted OK */
         return True;
 }
 
 /********************************************************
- Do a lookup_sids call to winbindd.
+ Do a lookup_names call to localhost.
 ********************************************************/
 
-static BOOL lookup_name_from_sid_via_winbind(TALLOC_CTX *ctx,
-						DOM_SID *psid,
-						const char **ppdomain,
-						const char **ppname)
+BOOL net_lookup_sid_from_name(TALLOC_CTX *ctx, const char *full_name, DOM_SID *pret_sid)
 {
-	struct winbindd_request request;
-	struct winbindd_response response;
+	NTSTATUS nt_status;
+	struct con_struct *csp = NULL;
+	DOM_SID *sids = NULL;
+	uint32 *types = NULL;
 
-	ZERO_STRUCT(request);
-	ZERO_STRUCT(response);
-
-	sid_to_string(request.data.sid, psid);
-
-	if (winbindd_request_response(WINBINDD_LOOKUPSID, &request, &response) != NSS_STATUS_SUCCESS) {
-                DEBUG(2, ("lookup_name_from_sid_via_winbind could not resolve %s\n", request.data.sid));
-                return False;
-        }
-
-	*ppdomain = talloc_strdup(ctx, response.data.name.dom_name);
-	*ppname = talloc_strdup(ctx, response.data.name.name);
-
-	return True;
-}
-
-/********************************************************
- The generic lookup name from sid call for net.
-********************************************************/
-
-BOOL net_lookup_name_from_sid(TALLOC_CTX *ctx, DOM_SID *psid, const char **ppdomain, const char **ppname)
-{
-	uint32 sidtype;
-
-	/* Check if local and we don't need to look up ... */
-	if (lookup_wellknown_sid(ctx, psid, ppdomain, ppname)) {
-		return True;
+	csp = create_cs(ctx);
+	if (csp == NULL) {
+		return False;
 	}
 
-	/* Check if the local machine is authoritative for this sid. We can't
-	   check if this is our SID as that's stored in the root-read-only
-	   secrets.tdb. */
+	nt_status = rpccli_lsa_lookup_names(csp->lsapipe, ctx,
+						&csp->pol,
+						1,
+						&full_name,
+						&sids,
+						&types);
 
-	if (lookup_name_from_sid_via_localhost(ctx, psid, ppdomain, ppname, &sidtype)) {
-		/* Cache here.... */
-		return True;
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		return False;
 	}
 
-	/* Finally it may be a trusted domain sid, ask winbindd. */
+	*pret_sid = sids[0];
 
-	if (lookup_name_from_sid_via_winbind(ctx, psid, ppdomain, ppname)) {
-		/* Cache here.... */
-		return True;
-	}
-
-	/* Can't map SID to name */
-	return False;
+        /* Converted OK */
+        return True;
 }
-
-/********************************************************
- The generic lookup sid from name call for net.
-********************************************************/
-
-BOOL net_lookup_sid_from_name(TALLOC_CTX *ctx, const char *domain, const char *name, DOM_SID *pret_sid)
-{
-	return False;
-}



More information about the samba-cvs mailing list