Move handle based access check into handle code path.
authorJeremy Allison <jra@samba.org>
Wed, 16 Nov 2011 00:14:16 +0000 (16:14 -0800)
committerJeremy Allison <jra@samba.org>
Wed, 16 Nov 2011 01:01:58 +0000 (17:01 -0800)
source3/smbd/trans2.c

index f6e62ef7dba257a6b6d621b2b4a561701dbc16cd..2da3ed0c1297adba417d8769a663daeef832e9ab 100644 (file)
@@ -6626,16 +6626,16 @@ static NTSTATUS smb_set_file_allocation_info(connection_struct *conn,
                allocation_size = smb_roundup(conn, allocation_size);
        }
 
-       if (fsp && !(fsp->access_mask & FILE_WRITE_DATA)) {
-               return NT_STATUS_ACCESS_DENIED;
-       }
-
        DEBUG(10,("smb_set_file_allocation_info: file %s : setting new "
                  "allocation size to %.0f\n", smb_fname_str_dbg(smb_fname),
                  (double)allocation_size));
 
        if (fsp && fsp->fh->fd != -1) {
                /* Open file handle. */
+               if (!(fsp->access_mask & FILE_WRITE_DATA)) {
+                       return NT_STATUS_ACCESS_DENIED;
+               }
+
                /* Only change if needed. */
                if (allocation_size != get_file_size_stat(&smb_fname->st)) {
                        if (vfs_allocate_file_space(fsp, allocation_size) == -1) {