[SCM] Samba Shared Repository - branch v3-6-test updated

Jeremy Allison jra at samba.org
Wed Dec 15 18:22:58 MST 2010


The branch, v3-6-test has been updated
       via  6d6dc07 Fix old bug in openX code, exposed when "strict allocate" is set to true.
      from  716e36d Change strict allocate to default to true. (cherry picked from commit 820ea22a07b062b1717d35de8fa7051fc1067c3f)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit 6d6dc074280259221de203a5d3c4cf149e69f3b6
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Dec 15 16:49:04 2010 -0800

    Fix old bug in openX code, exposed when "strict allocate" is set to true.
    
    We need to return the file size here, not the allocation size, but
    we were not updating the stat struct after the vfs_set_filesize()
    call. Ensure we always use fresh data in openX replies.
    
    Jeremy.
    (cherry picked from commit 8764576e1068455fd2f5035ac1ea31962e471361)

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/reply.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 26badc4..e5067cc 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -1985,12 +1985,16 @@ void reply_open_and_X(struct smb_request *req)
 			reply_nterror(req, NT_STATUS_DISK_FULL);
 			goto out;
 		}
-		smb_fname->st.st_ex_size =
-		    SMB_VFS_GET_ALLOC_SIZE(conn, fsp, &smb_fname->st);
+		status = vfs_stat_fsp(fsp);
+		if (!NT_STATUS_IS_OK(status)) {
+			close_file(req, fsp, ERROR_CLOSE);
+			reply_nterror(req, status);
+			goto out;
+		}
 	}
 
-	fattr = dos_mode(conn, smb_fname);
-	mtime = convert_timespec_to_time_t(smb_fname->st.st_ex_mtime);
+	fattr = dos_mode(conn, fsp->fsp_name);
+	mtime = convert_timespec_to_time_t(fsp->fsp_name->st.st_ex_mtime);
 	if (fattr & aDIR) {
 		close_file(req, fsp, ERROR_CLOSE);
 		reply_nterror(req, NT_STATUS_ACCESS_DENIED);
@@ -2038,7 +2042,7 @@ void reply_open_and_X(struct smb_request *req)
 	} else {
 		srv_put_dos_date3((char *)req->outbuf,smb_vwv4,mtime);
 	}
-	SIVAL(req->outbuf,smb_vwv6,(uint32)smb_fname->st.st_ex_size);
+	SIVAL(req->outbuf,smb_vwv6,(uint32)fsp->fsp_name->st.st_ex_size);
 	SSVAL(req->outbuf,smb_vwv8,GET_OPENX_MODE(deny_mode));
 	SSVAL(req->outbuf,smb_vwv11,smb_action);
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list