svn commit: samba r2280 - in branches/SAMBA_4_0/source/rpc_server: . samr

tridge at samba.org tridge at samba.org
Sat Sep 11 12:32:06 GMT 2004


Author: tridge
Date: 2004-09-11 12:32:05 +0000 (Sat, 11 Sep 2004)
New Revision: 2280

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/rpc_server&rev=2280&nolog=1

Log:
fixed the session key choice for ncacn_np and ncacn_ip_tcp in the rpc server


Modified:
   branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
   branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h
   branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c
   branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c


Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2004-09-10 16:15:29 UTC (rev 2279)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2004-09-11 12:32:05 UTC (rev 2280)
@@ -300,6 +300,7 @@
 
 	session_info->refcount++;
 	(*dce_conn_p)->auth_state.session_info = session_info;
+	(*dce_conn_p)->transport_session_key = session_info->session_key;
 
 	/* TODO: check security descriptor of the endpoint here 
 	 *       if it's a smb named pipe
@@ -763,15 +764,16 @@
 		return status;
 	}
 
-	dce_partial_advance(dce_conn, blob.length);
-
 	/* we have to check the signing here, before combining the
 	   pdus */
 	if (call->pkt.ptype == DCERPC_PKT_REQUEST &&
-	    !dcesrv_auth_request(call)) {
+	    !dcesrv_auth_request(call, &blob)) {
+		dce_partial_advance(dce_conn, blob.length);
 		return dcesrv_fault(call, DCERPC_FAULT_LOGON_FAILURE);		
 	}
 
+	dce_partial_advance(dce_conn, blob.length);
+
 	/* see if this is a continued packet */
 	if (!(call->pkt.pfc_flags & DCERPC_PFC_FLAG_FIRST)) {
 		struct dcesrv_call_state *call2 = call;

Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h	2004-09-10 16:15:29 UTC (rev 2279)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h	2004-09-11 12:32:05 UTC (rev 2280)
@@ -134,6 +134,9 @@
 	struct dcesrv_auth auth_state;
 
 	struct server_connection *srv_conn;
+
+	/* the transport level session key */
+	DATA_BLOB transport_session_key;
 };
 
 

Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c	2004-09-10 16:15:29 UTC (rev 2279)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_tcp.c	2004-09-11 12:32:05 UTC (rev 2280)
@@ -124,8 +124,6 @@
 
 	DEBUG(5,("dcesrv_tcp_accept\n"));
 
-
-
 	status = dcesrv_endpoint_connect(dcesrv_sock->dcesrv_ctx, dcesrv_sock->endpoint, &dcesrv_conn);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0,("dcesrv_tcp_accept: dcesrv_endpoint_connect failed: %s\n", 
@@ -135,6 +133,8 @@
 
 	dcesrv_conn->srv_conn = conn;
 
+	dcesrv_conn->transport_session_key = data_blob_talloc(dcesrv_conn, "SystemLibraryDTC", 16);
+
 	conn->private_data = dcesrv_conn;
 
 	/* TODO: this should to the generic code

Modified: branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c	2004-09-10 16:15:29 UTC (rev 2279)
+++ branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c	2004-09-11 12:32:05 UTC (rev 2280)
@@ -683,12 +683,8 @@
 	uint32_t new_pass_len;
 	DATA_BLOB session_key = data_blob(NULL, 0);
 
-	session_key = data_blob(NULL,0);
+	session_key = dce_call->conn->transport_session_key;
 
-	if (dce_call->conn->auth_state.session_info) {	
-		session_key = dce_call->conn->auth_state.session_info->session_key;
-	}
-
 	if (session_key.length == 0) {
 		DEBUG(3,("Bad session key in samr_set_password\n"));
 		return NT_STATUS_NO_USER_SESSION_KEY;
@@ -731,12 +727,8 @@
 	DATA_BLOB session_key = data_blob(NULL, 0);
 	struct MD5Context ctx;
 
-	session_key = data_blob(NULL,0);
+	session_key = dce_call->conn->transport_session_key;
 
-	if (dce_call->conn->auth_state.session_info) {	
-		session_key = dce_call->conn->auth_state.session_info->session_key;
-	}
-
 	if (session_key.length == 0) {
 		DEBUG(3,("Bad session key in samr_set_password\n"));
 		return NT_STATUS_NO_USER_SESSION_KEY;



More information about the samba-cvs mailing list