s3: Modify direct caller of open_file to call SMB_VFS_CREATE_FILE
authorTim Prouty <tprouty@samba.org>
Sun, 23 Nov 2008 03:37:24 +0000 (19:37 -0800)
committerTim Prouty <tprouty@samba.org>
Thu, 4 Dec 2008 01:51:23 +0000 (17:51 -0800)
source3/smbd/open.c

index 62d4827bb25576130fda4caf2d8d2141753585b9..2e34115071d6e9eabbe04dac8ef753ad5f505e04 100644 (file)
@@ -2143,10 +2143,25 @@ NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn,
                return status;
        }
 
                return status;
        }
 
-       /* note! we must use a non-zero desired access or we don't get
-           a real file descriptor. Oh what a twisted web we weave. */
-       status = open_file(fsp, conn, NULL, NULL, NULL, fname, psbuf, O_WRONLY,
-                          0, FILE_WRITE_DATA, FILE_WRITE_DATA);
+       status = SMB_VFS_CREATE_FILE(
+               conn,                                   /* conn */
+               NULL,                                   /* req */
+               0,                                      /* root_dir_fid */
+               fname,                                  /* fname */
+               false,                                  /* is_dos_path */
+               FILE_WRITE_DATA,                        /* access_mask */
+               (FILE_SHARE_READ | FILE_SHARE_WRITE |   /* share_access */
+                   FILE_SHARE_DELETE),
+               FILE_OPEN,                              /* create_disposition*/
+               0,                                      /* create_options */
+               0,                                      /* file_attributes */
+               0,                                      /* oplock_request */
+               0,                                      /* allocation_size */
+               NULL,                                   /* sd */
+               NULL,                                   /* ea_list */
+               &fsp,                                   /* result */
+               NULL,                                   /* pinfo */
+               psbuf);                                 /* psbuf */
 
        /*
         * This is not a user visible file open.
 
        /*
         * This is not a user visible file open.