svn commit: samba r22485 - in branches/SAMBA_4_0/source/librpc/rpc: .

metze at samba.org metze at samba.org
Mon Apr 23 10:39:21 GMT 2007


Author: metze
Date: 2007-04-23 10:39:20 +0000 (Mon, 23 Apr 2007)
New Revision: 22485

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

Log:
don't crash when the main dcerpc code haven't setup
transport.recv_data yet

also return always a usefull error

metze
Modified:
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb2.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_sock.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb.c	2007-04-23 10:04:15 UTC (rev 22484)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb.c	2007-04-23 10:39:20 UTC (rev 22485)
@@ -39,7 +39,17 @@
 */
 static void pipe_dead(struct dcerpc_connection *c, NTSTATUS status)
 {
-	c->transport.recv_data(c, NULL, status);
+	if (NT_STATUS_EQUAL(NT_STATUS_UNSUCCESSFUL, status)) {
+		status = NT_STATUS_UNEXPECTED_NETWORK_ERROR;
+	}
+
+	if (NT_STATUS_EQUAL(NT_STATUS_OK, status)) {
+		status = NT_STATUS_END_OF_FILE;
+	}
+
+	if (c->transport.recv_data) {
+		c->transport.recv_data(c, NULL, status);
+	}
 }
 
 

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb2.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb2.c	2007-04-23 10:04:15 UTC (rev 22484)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_smb2.c	2007-04-23 10:39:20 UTC (rev 22485)
@@ -41,7 +41,17 @@
 */
 static void pipe_dead(struct dcerpc_connection *c, NTSTATUS status)
 {
-	c->transport.recv_data(c, NULL, status);
+	if (NT_STATUS_EQUAL(NT_STATUS_UNSUCCESSFUL, status)) {
+		status = NT_STATUS_UNEXPECTED_NETWORK_ERROR;
+	}
+
+	if (NT_STATUS_EQUAL(NT_STATUS_OK, status)) {
+		status = NT_STATUS_END_OF_FILE;
+	}
+
+	if (c->transport.recv_data) {
+		c->transport.recv_data(c, NULL, status);
+	}
 }
 
 

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_sock.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_sock.c	2007-04-23 10:04:15 UTC (rev 22484)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_sock.c	2007-04-23 10:39:20 UTC (rev 22485)
@@ -76,7 +76,7 @@
 		status = NT_STATUS_END_OF_FILE;
 	}
 
-	if (!NT_STATUS_IS_OK(status)) {
+	if (p->transport.recv_data) {
 		p->transport.recv_data(p, NULL, status);
 	}
 }



More information about the samba-cvs mailing list