changeset 11059:d7f549e03f90

6900315 Copying files over CIFS may lead to data corruption
author jose borrego <Jose.Borrego@Sun.COM>
date Thu, 12 Nov 2009 15:48:02 -0700
parents abfa2ec42964
children 40daac51fc0c
files usr/src/uts/common/fs/smbsrv/smb_mbuf_marshaling.c
diffstat 1 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/fs/smbsrv/smb_mbuf_marshaling.c	Thu Nov 12 16:01:54 2009 +0100
+++ b/usr/src/uts/common/fs/smbsrv/smb_mbuf_marshaling.c	Thu Nov 12 15:48:02 2009 -0700
@@ -1350,7 +1350,7 @@
 	 * request) this function is called with a residual count of zero
 	 * bytes.
 	 */
-	if (bytes) {
+	if (bytes != 0) {
 		iov = uio->uio_iov;
 		uio->uio_segflg = UIO_SYSSPACE;
 
@@ -1373,7 +1373,8 @@
 			if (remainder >= bytes) {
 				iov[i].iov_len = bytes;
 				mbc->chain_offset += bytes;
-				break;
+				uio->uio_iovcnt = i + 1;
+				return (0);
 			}
 			iov[i].iov_len = remainder;
 			mbc->chain_offset += remainder;
@@ -1381,10 +1382,7 @@
 			m = m->m_next;
 			offset = 0;
 		}
-		if (i == uio->uio_iovcnt) {
-			return (DECODE_NO_MORE_DATA);
-		}
-		uio->uio_iovcnt = i;
+		return (DECODE_NO_MORE_DATA);
 	}
 	return (0);
 }