svn commit: samba r22145 - in branches: SAMBA_3_0/source/smbd SAMBA_3_0_25/source/smbd

jra at samba.org jra at samba.org
Mon Apr 9 21:01:47 GMT 2007


Author: jra
Date: 2007-04-09 21:01:46 +0000 (Mon, 09 Apr 2007)
New Revision: 22145

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

Log:
Fix bug #4494 - reported by Kevin Jamieson <bugzilla at kevinjamieson.com>.
If returning a mapped UNIX error from sendfile, don't call chain_reply.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/smbd/process.c
   branches/SAMBA_3_0/source/smbd/reply.c
   branches/SAMBA_3_0_25/source/smbd/process.c
   branches/SAMBA_3_0_25/source/smbd/reply.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/process.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/process.c	2007-04-09 18:56:26 UTC (rev 22144)
+++ branches/SAMBA_3_0/source/smbd/process.c	2007-04-09 21:01:46 UTC (rev 22145)
@@ -1161,8 +1161,8 @@
 	char outbuf_saved[smb_wct];
 	int outsize = smb_len(outbuf) + 4;
 
-	/* maybe its not chained */
-	if (smb_com2 == 0xFF) {
+	/* Maybe its not chained, or it's an error packet. */
+	if (smb_com2 == 0xFF || SVAL(outbuf,smb_rcls) != 0) {
 		SCVAL(outbuf,smb_vwv0,0xFF);
 		return outsize;
 	}

Modified: branches/SAMBA_3_0/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/reply.c	2007-04-09 18:56:26 UTC (rev 22144)
+++ branches/SAMBA_3_0/source/smbd/reply.c	2007-04-09 21:01:46 UTC (rev 22145)
@@ -2706,8 +2706,10 @@
 	}
 
 	nread = send_file_readX(conn, inbuf, outbuf, length, bufsize, fsp, startpos, smb_maxcnt);
-	if (nread != -1)
+	/* Only call chain_reply if not an error. */
+	if (nread != -1 && SVAL(outbuf,smb_rcls) == 0) {
 		nread = chain_reply(inbuf,outbuf,length,bufsize);
+	}
 
 	END_PROFILE(SMBreadX);
 	return nread;

Modified: branches/SAMBA_3_0_25/source/smbd/process.c
===================================================================
--- branches/SAMBA_3_0_25/source/smbd/process.c	2007-04-09 18:56:26 UTC (rev 22144)
+++ branches/SAMBA_3_0_25/source/smbd/process.c	2007-04-09 21:01:46 UTC (rev 22145)
@@ -1153,8 +1153,8 @@
 	char outbuf_saved[smb_wct];
 	int outsize = smb_len(outbuf) + 4;
 
-	/* maybe its not chained */
-	if (smb_com2 == 0xFF) {
+	/* Maybe its not chained, or it's an error packet. */
+	if (smb_com2 == 0xFF || SVAL(outbuf,smb_rcls) != 0) {
 		SCVAL(outbuf,smb_vwv0,0xFF);
 		return outsize;
 	}

Modified: branches/SAMBA_3_0_25/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_0_25/source/smbd/reply.c	2007-04-09 18:56:26 UTC (rev 22144)
+++ branches/SAMBA_3_0_25/source/smbd/reply.c	2007-04-09 21:01:46 UTC (rev 22145)
@@ -2705,8 +2705,10 @@
 	}
 
 	nread = send_file_readX(conn, inbuf, outbuf, length, bufsize, fsp, startpos, smb_maxcnt);
-	if (nread != -1)
+	/* Only call chain_reply if not an error. */
+	if (nread != -1 && SVAL(outbuf,smb_rcls) == 0) {
 		nread = chain_reply(inbuf,outbuf,length,bufsize);
+	}
 
 	END_PROFILE(SMBreadX);
 	return nread;



More information about the samba-cvs mailing list