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

tridge at samba.org tridge at samba.org
Sun Dec 12 08:35:12 GMT 2004


Author: tridge
Date: 2004-12-12 08:35:11 +0000 (Sun, 12 Dec 2004)
New Revision: 4161

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

Log:
two more fixes for NT4 clients. Bugs found by kukks.

 - nt4 doesn't setup the pfc flags correctly for rpc packet types
   other than normal requests, so don't check for fragmented packets
   unless they are of type request

 - ensure we give STATUS_BUFFER_OVERFLOW when we return a partial
   fragment in SMBtrans requests on ncacn_np




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


Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2004-12-12 08:33:08 UTC (rev 4160)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2004-12-12 08:35:11 UTC (rev 4161)
@@ -849,7 +849,8 @@
 	dce_partial_advance(dce_conn, blob.length);
 
 	/* see if this is a continued packet */
-	if (!(call->pkt.pfc_flags & DCERPC_PFC_FLAG_FIRST)) {
+	if (call->pkt.ptype == DCERPC_PKT_REQUEST &&
+	    !(call->pkt.pfc_flags & DCERPC_PFC_FLAG_FIRST)) {
 		struct dcesrv_call_state *call2 = call;
 		uint32_t alloc_size;
 
@@ -895,7 +896,8 @@
 
 	/* this may not be the last pdu in the chain - if its isn't then
 	   just put it on the call_list and wait for the rest */
-	if (!(call->pkt.pfc_flags & DCERPC_PFC_FLAG_LAST)) {
+	if (call->pkt.ptype == DCERPC_PKT_REQUEST &&
+	    !(call->pkt.pfc_flags & DCERPC_PFC_FLAG_LAST)) {
 		DLIST_ADD_END(dce_conn->call_list, call, struct dcesrv_call_state *);
 		return NT_STATUS_OK;
 	}
@@ -998,6 +1000,8 @@
 	if (rep->data.length == 0) {
 		/* we're done with this section of the call */
 		DLIST_REMOVE(call->replies, rep);
+	} else {
+		return STATUS_BUFFER_OVERFLOW;
 	}
 
 	if (call->replies == NULL) {



More information about the samba-cvs mailing list