svn commit: samba r11661 - branches/SAMBA_3_0/source/auth branches/SAMBA_3_0/source/libsmb branches/SAMBA_3_0/source/nsswitch branches/SAMBA_3_0/source/smbd trunk/source/auth trunk/source/libsmb trunk/source/nsswitch trunk/source/smbd

jerry at samba.org jerry at samba.org
Fri Nov 11 03:03:43 GMT 2005


Author: jerry
Date: 2005-11-11 03:03:41 +0000 (Fri, 11 Nov 2005)
New Revision: 11661

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

Log:
Store the INFO3 in the PAC data into the netsamlogon_cache.
Also remove the mem_ctx from the netsamlogon_cache_store() API.

Guenther, what should we be doing with the other fields in 
the PAC_LOGON_INFO?



Modified:
   branches/SAMBA_3_0/source/auth/auth_domain.c
   branches/SAMBA_3_0/source/libsmb/samlogon_cache.c
   branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c
   branches/SAMBA_3_0/source/smbd/sesssetup.c
   trunk/source/auth/auth_domain.c
   trunk/source/libsmb/samlogon_cache.c
   trunk/source/nsswitch/winbindd_pam.c
   trunk/source/smbd/sesssetup.c


Changeset:
Modified: branches/SAMBA_3_0/source/auth/auth_domain.c
===================================================================
--- branches/SAMBA_3_0/source/auth/auth_domain.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ branches/SAMBA_3_0/source/auth/auth_domain.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -253,7 +253,7 @@
 						server_info,
 						&info3);
 
-		netsamlogon_cache_store( mem_ctx, user_info->smb_name.str, &info3 );
+		netsamlogon_cache_store( user_info->smb_name.str, &info3 );
 	}
 
 	/* Note - once the cli stream is shutdown the mem_ctx used

Modified: branches/SAMBA_3_0/source/libsmb/samlogon_cache.c
===================================================================
--- branches/SAMBA_3_0/source/libsmb/samlogon_cache.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ branches/SAMBA_3_0/source/libsmb/samlogon_cache.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -109,7 +109,7 @@
  username should be in UTF-8 format
 ***********************************************************************/
 
-BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, const char * username, NET_USER_INFO_3 *user)
+BOOL netsamlogon_cache_store( const char *username, NET_USER_INFO_3 *user )
 {
 	TDB_DATA 	data;
         fstring 	keystr;
@@ -117,6 +117,7 @@
 	BOOL 		result = False;
 	DOM_SID		user_sid;
 	time_t		t = time(NULL);
+	TALLOC_CTX 	*mem_ctx;
 	
 
 	if (!netsamlogon_cache_init()) {
@@ -142,6 +143,11 @@
 		
 	/* Prepare data */
 	
+	if ( !(mem_ctx = TALLOC_P( NULL, int )) ) {
+		DEBUG(0,("netsamlogon_cache_store: talloc() failed!\n"));
+		return False;
+	}
+
 	prs_init( &ps, RPC_MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
 	
 	if ( !prs_uint32( "timestamp", &ps, 0, (uint32*)&t ) )
@@ -157,6 +163,8 @@
 		
 		prs_mem_free( &ps );
 	}
+
+	TALLOC_FREE( mem_ctx );
 		
 	return result;
 }
@@ -175,7 +183,7 @@
 	uint32		t;
 	
 	if (!netsamlogon_cache_init()) {
-		DEBUG(0,("netsamlogon_cache_store: cannot open %s for write!\n", NETSAMLOGON_TDB));
+		DEBUG(0,("netsamlogon_cache_get: cannot open %s for write!\n", NETSAMLOGON_TDB));
 		return False;
 	}
 

Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_pam.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -382,7 +382,7 @@
 	} while ( (attempts < 2) && retry );
 
 	if (NT_STATUS_IS_OK(result)) {
-		netsamlogon_cache_store(state->mem_ctx, name_user, &info3);
+		netsamlogon_cache_store(name_user, &info3);
 		wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
 
 		/* Check if the user is in the right group */
@@ -667,7 +667,7 @@
 	} while ( (attempts < 2) && retry );
 
 	if (NT_STATUS_IS_OK(result)) {
-		netsamlogon_cache_store(state->mem_ctx, name_user, &info3);
+		netsamlogon_cache_store(name_user, &info3);
 		wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
 
 		/* Check if the user is in the right group */

Modified: branches/SAMBA_3_0/source/smbd/sesssetup.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/sesssetup.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ branches/SAMBA_3_0/source/smbd/sesssetup.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -180,10 +180,6 @@
 		return ERROR_NT(NT_STATUS_LOGON_FAILURE);
 	}
 
-	if (pac_data) {
-		logon_info = get_logon_info_from_pac(pac_data);
-	}
-
 	DEBUG(3,("Ticket name is [%s]\n", client));
 
 	p = strchr_m(client, '@');
@@ -196,6 +192,14 @@
 	}
 
 	*p = 0;
+
+	/* save the PAC data if we have it */
+
+	if (pac_data) {
+		logon_info = get_logon_info_from_pac(pac_data);
+		netsamlogon_cache_store( client, &logon_info->info3 );
+	}
+
 	if (!strequal(p+1, lp_realm())) {
 		DEBUG(3,("Ticket for foreign realm %s@%s\n", client, p+1));
 		if (!lp_allow_trusted_domains()) {

Modified: trunk/source/auth/auth_domain.c
===================================================================
--- trunk/source/auth/auth_domain.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ trunk/source/auth/auth_domain.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -253,7 +253,7 @@
 						server_info,
 						&info3);
 
-		netsamlogon_cache_store( mem_ctx, user_info->smb_name.str, &info3 );
+		netsamlogon_cache_store( user_info->smb_name.str, &info3 );
 	}
 
 	/* Note - once the cli stream is shutdown the mem_ctx used

Modified: trunk/source/libsmb/samlogon_cache.c
===================================================================
--- trunk/source/libsmb/samlogon_cache.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ trunk/source/libsmb/samlogon_cache.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -109,7 +109,7 @@
  username should be in UTF-8 format
 ***********************************************************************/
 
-BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, const char * username, NET_USER_INFO_3 *user)
+BOOL netsamlogon_cache_store( const char *username, NET_USER_INFO_3 *user )
 {
 	TDB_DATA 	data;
         fstring 	keystr;
@@ -117,6 +117,7 @@
 	BOOL 		result = False;
 	DOM_SID		user_sid;
 	time_t		t = time(NULL);
+	TALLOC_CTX 	*mem_ctx;
 	
 
 	if (!netsamlogon_cache_init()) {
@@ -142,6 +143,11 @@
 		
 	/* Prepare data */
 	
+	if ( !(mem_ctx = TALLOC_P( NULL, int )) ) {
+		DEBUG(0,("netsamlogon_cache_store: talloc() failed!\n"));
+		return False;
+	}
+
 	prs_init( &ps, RPC_MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
 	
 	if ( !prs_uint32( "timestamp", &ps, 0, (uint32*)&t ) )
@@ -157,6 +163,8 @@
 		
 		prs_mem_free( &ps );
 	}
+
+	TALLOC_FREE( mem_ctx );
 		
 	return result;
 }
@@ -175,7 +183,7 @@
 	uint32		t;
 	
 	if (!netsamlogon_cache_init()) {
-		DEBUG(0,("netsamlogon_cache_store: cannot open %s for write!\n", NETSAMLOGON_TDB));
+		DEBUG(0,("netsamlogon_cache_get: cannot open %s for write!\n", NETSAMLOGON_TDB));
 		return False;
 	}
 

Modified: trunk/source/nsswitch/winbindd_pam.c
===================================================================
--- trunk/source/nsswitch/winbindd_pam.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ trunk/source/nsswitch/winbindd_pam.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -382,7 +382,7 @@
 	} while ( (attempts < 2) && retry );
 
 	if (NT_STATUS_IS_OK(result)) {
-		netsamlogon_cache_store(state->mem_ctx, name_user, &info3);
+		netsamlogon_cache_store(name_user, &info3);
 		wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
 
 		/* Check if the user is in the right group */
@@ -667,7 +667,7 @@
 	} while ( (attempts < 2) && retry );
 
 	if (NT_STATUS_IS_OK(result)) {
-		netsamlogon_cache_store(state->mem_ctx, name_user, &info3);
+		netsamlogon_cache_store(name_user, &info3);
 		wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
 
 		/* Check if the user is in the right group */

Modified: trunk/source/smbd/sesssetup.c
===================================================================
--- trunk/source/smbd/sesssetup.c	2005-11-11 01:38:39 UTC (rev 11660)
+++ trunk/source/smbd/sesssetup.c	2005-11-11 03:03:41 UTC (rev 11661)
@@ -180,10 +180,6 @@
 		return ERROR_NT(NT_STATUS_LOGON_FAILURE);
 	}
 
-	if (pac_data) {
-		logon_info = get_logon_info_from_pac(pac_data);
-	}
-
 	DEBUG(3,("Ticket name is [%s]\n", client));
 
 	p = strchr_m(client, '@');
@@ -196,6 +192,14 @@
 	}
 
 	*p = 0;
+
+	/* save the PAC data if we have it */
+
+	if (pac_data) {
+		logon_info = get_logon_info_from_pac(pac_data);
+		netsamlogon_cache_store( client, &logon_info->info3 );
+	}
+
 	if (!strequal(p+1, lp_realm())) {
 		DEBUG(3,("Ticket for foreign realm %s@%s\n", client, p+1));
 		if (!lp_allow_trusted_domains()) {



More information about the samba-cvs mailing list