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

tridge at samba.org tridge at samba.org
Tue May 3 15:15:35 GMT 2005


Author: tridge
Date: 2005-05-03 15:15:34 +0000 (Tue, 03 May 2005)
New Revision: 6604

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

Log:
solved a memory hierarchy ordering problem that led to crashes on
ncacn_ip_tcp and ncalrpc for the standard process model.

Thanks to Jelmer for noticing this bug!


Modified:
   branches/SAMBA_4_0/source/rpc_server/dcerpc_sock.c


Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_sock.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_sock.c	2005-05-03 14:38:14 UTC (rev 6603)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_sock.c	2005-05-03 15:15:34 UTC (rev 6604)
@@ -151,7 +151,7 @@
 	uint16_t port = 1;
 	NTSTATUS status;
 
-	dcesrv_sock = talloc(dce_ctx, struct dcesrv_socket_context);
+	dcesrv_sock = talloc(event_ctx, struct dcesrv_socket_context);
 	NT_STATUS_HAVE_NO_MEMORY(dcesrv_sock);
 
 	/* remember the endpoint of this socket */
@@ -186,12 +186,12 @@
 
 	full_path = talloc_asprintf(dce_ctx, "%s/%s", lp_ncalrpc_dir(), e->ep_description->endpoint);
 
-	dcesrv_sock = talloc(dce_ctx, struct dcesrv_socket_context);
+	dcesrv_sock = talloc(event_ctx, struct dcesrv_socket_context);
 	NT_STATUS_HAVE_NO_MEMORY(dcesrv_sock);
 
 	/* remember the endpoint of this socket */
 	dcesrv_sock->endpoint		= e;
-	dcesrv_sock->dcesrv_ctx		= dce_ctx;
+	dcesrv_sock->dcesrv_ctx		= talloc_reference(dcesrv_sock, dce_ctx);
 
 	status = stream_setup_socket(event_ctx, model_ops, &dcesrv_stream_ops, 
 				     "unix", full_path, &port, dcesrv_sock);
@@ -217,12 +217,12 @@
 		port = atoi(e->ep_description->endpoint);
 	}
 
-	dcesrv_sock = talloc(dce_ctx, struct dcesrv_socket_context);
+	dcesrv_sock = talloc(event_ctx, struct dcesrv_socket_context);
 	NT_STATUS_HAVE_NO_MEMORY(dcesrv_sock);
 
 	/* remember the endpoint of this socket */
 	dcesrv_sock->endpoint		= e;
-	dcesrv_sock->dcesrv_ctx		= dce_ctx;
+	dcesrv_sock->dcesrv_ctx		= talloc_reference(dcesrv_sock, dce_ctx);
 
 	status = stream_setup_socket(event_ctx, model_ops, &dcesrv_stream_ops, 
 				     "ipv4", address, &port, dcesrv_sock);



More information about the samba-cvs mailing list