s3:vfs: add create tags to SMB_VFS_CREATEFILE
authorRalph Boehme <slow@samba.org>
Wed, 26 Nov 2014 13:12:51 +0000 (14:12 +0100)
committerJeremy Allison <jra@samba.org>
Thu, 4 Dec 2014 21:11:07 +0000 (22:11 +0100)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
20 files changed:
examples/VFS/skel_opaque.c
examples/VFS/skel_transparent.c
source3/include/vfs.h
source3/include/vfs_macros.h
source3/modules/vfs_default.c
source3/modules/vfs_fruit.c
source3/modules/vfs_full_audit.c
source3/modules/vfs_media_harmony.c
source3/modules/vfs_time_audit.c
source3/modules/vfs_worm.c
source3/printing/nt_printing.c
source3/rpc_server/srvsvc/srv_srvsvc_nt.c
source3/smbd/dosmode.c
source3/smbd/nttrans.c
source3/smbd/open.c
source3/smbd/proto.h
source3/smbd/reply.c
source3/smbd/smb2_create.c
source3/smbd/trans2.c
source3/smbd/vfs.c

index 6e15a0675b773c1876586d71532df0148b5e8d16..b52c381572eb1b9ec97a87c65d50c508a0cfb4a8 100644 (file)
@@ -174,7 +174,9 @@ static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
                                 uint32_t private_flags,
                                 struct security_descriptor *sd,
                                 struct ea_list *ea_list,
-                                files_struct **result, int *pinfo)
+                                files_struct **result, int *pinfo,
+                                const struct smb2_create_blobs *in_context_blobs,
+                                struct smb2_create_blobs *out_context_blobs)
 {
        return NT_STATUS_NOT_IMPLEMENTED;
 }
index b11e29c342a5c628981cbcb46c0be891fdd3f13b..925e5200350c7178a8f665e085a30caf28fa5388 100644 (file)
@@ -169,7 +169,9 @@ static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
                                 uint32_t private_flags,
                                 struct security_descriptor *sd,
                                 struct ea_list *ea_list,
-                                files_struct ** result, int *pinfo)
+                                files_struct ** result, int *pinfo,
+                                const struct smb2_create_blobs *in_context_blobs,
+                                struct smb2_create_blobs *out_context_blobs)
 {
        return SMB_VFS_NEXT_CREATE_FILE(handle,
                                        req,
@@ -184,7 +186,8 @@ static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
                                        lease,
                                        allocation_size,
                                        private_flags,
-                                       sd, ea_list, result, pinfo);
+                                       sd, ea_list, result, pinfo,
+                                       in_context_blobs, out_context_blobs);
 }
 
 static int skel_close_fn(vfs_handle_struct *handle, files_struct *fsp)
index b10e9a54bee10f04e9170df033b536a888fb2789..1843ef428ee3f58f0b5c36038bf9b85849069915 100644 (file)
 /* Version 32 - Add "lease" to CREATE_FILE operation */
 /* Version 32 - Add "lease" to struct files_struct */
 /* Version 32 - Add SMB_VFS_READDIR_ATTR() */
+/* Version 32 - Add in and our create context blobs to create_file */
 
 #define SMB_VFS_INTERFACE_VERSION 32
 
@@ -553,7 +554,9 @@ struct vfs_fn_pointers {
                                   struct security_descriptor *sd,
                                   struct ea_list *ea_list,
                                   files_struct **result,
-                                  int *pinfo);
+                                  int *pinfo,
+                                  const struct smb2_create_blobs *in_context_blobs,
+                                  struct smb2_create_blobs *out_context_blobs);
        int (*close_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp);
        ssize_t (*read_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, void *data, size_t n);
        ssize_t (*pread_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, void *data, size_t n, off_t offset);
@@ -964,7 +967,9 @@ NTSTATUS smb_vfs_call_create_file(struct vfs_handle_struct *handle,
                                  struct security_descriptor *sd,
                                  struct ea_list *ea_list,
                                  files_struct **result,
-                                 int *pinfo);
+                                 int *pinfo,
+                                 const struct smb2_create_blobs *in_context_blobs,
+                                 struct smb2_create_blobs *out_context_blobs);
 int smb_vfs_call_close(struct vfs_handle_struct *handle,
                       struct files_struct *fsp);
 ssize_t smb_vfs_call_read(struct vfs_handle_struct *handle,
index df676adaca01443bc6c2e11526803104f4eb7902..ef97b49e7e7a614a6f4b79c0a922111bfa4b6d4c 100644 (file)
        smb_vfs_call_open((handle)->next, (fname), (fsp), (flags), (mode))
 
 #define SMB_VFS_CREATE_FILE(conn, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, \
-       create_options, file_attributes, oplock_request, lease, allocation_size, private_flags, sd, ea_list, result, pinfo) \
-       smb_vfs_call_create_file((conn)->vfs_handles, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), \
-       (create_options), (file_attributes), (oplock_request), (lease), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo))
+        create_options, file_attributes, oplock_request, lease, allocation_size, private_flags, sd, ea_list, result, pinfo, in_context_blobs, out_context_blobs) \
+        smb_vfs_call_create_file((conn)->vfs_handles, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), \
+        (create_options), (file_attributes), (oplock_request), (lease), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo), \
+       (in_context_blobs), (out_context_blobs))
 #define SMB_VFS_NEXT_CREATE_FILE(handle, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, \
-       create_options, file_attributes, oplock_request, lease, allocation_size, private_flags, sd, ea_list, result, pinfo) \
+       create_options, file_attributes, oplock_request, lease, allocation_size, private_flags, sd, ea_list, result, pinfo, in_context_blobs, out_context_blobs) \
        smb_vfs_call_create_file((handle)->next, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), \
-       (create_options), (file_attributes), (oplock_request), (lease), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo))
+        (create_options), (file_attributes), (oplock_request), (lease), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo), \
+       (in_context_blobs), (out_context_blobs))
 
 #define SMB_VFS_CLOSE(fsp) \
        smb_vfs_call_close((fsp)->conn->vfs_handles, (fsp))
index 7610e659064e4c7ba68411a7d31bc8ceea811bd0..613101a09a95292c64a63b755b9721f93ec14cb3 100644 (file)
@@ -531,7 +531,9 @@ static NTSTATUS vfswrap_create_file(vfs_handle_struct *handle,
                                    struct security_descriptor *sd,
                                    struct ea_list *ea_list,
                                    files_struct **result,
-                                   int *pinfo)
+                                   int *pinfo,
+                                   const struct smb2_create_blobs *in_context_blobs,
+                                   struct smb2_create_blobs *out_context_blobs)
 {
        return create_file_default(handle->conn, req, root_dir_fid, smb_fname,
                                   access_mask, share_access,
@@ -539,7 +541,7 @@ static NTSTATUS vfswrap_create_file(vfs_handle_struct *handle,
                                   file_attributes, oplock_request, lease,
                                   allocation_size, private_flags,
                                   sd, ea_list, result,
-                                  pinfo);
+                                  pinfo, in_context_blobs, out_context_blobs);
 }
 
 static int vfswrap_close(vfs_handle_struct *handle, files_struct *fsp)
index da1ec7f31eb505a95dcb100ea09c84c93965f3f4..9af204348a994df110e95e703df936cef527524b 100644 (file)
@@ -2874,7 +2874,9 @@ static NTSTATUS fruit_create_file(vfs_handle_struct *handle,
                                  struct security_descriptor *sd,
                                  struct ea_list *ea_list,
                                  files_struct **result,
-                                 int *pinfo)
+                                 int *pinfo,
+                                 const struct smb2_create_blobs *in_context_blobs,
+                                 struct smb2_create_blobs *out_context_blobs)
 {
        NTSTATUS status;
        struct fruit_config_data *config = NULL;
@@ -2887,7 +2889,8 @@ static NTSTATUS fruit_create_file(vfs_handle_struct *handle,
                lease,
                allocation_size, private_flags,
                sd, ea_list, result,
-               pinfo);
+               pinfo,
+               in_context_blobs, out_context_blobs);
 
        if (!NT_STATUS_IS_OK(status)) {
                return status;
index 489a28c58b3f4cad209e9678c71d44a65a3d65ce..c5a9c0df64782566a7e6a831b695ac5f5e5cee7f 100644 (file)
@@ -871,7 +871,9 @@ static NTSTATUS smb_full_audit_create_file(vfs_handle_struct *handle,
                                      struct security_descriptor *sd,
                                      struct ea_list *ea_list,
                                      files_struct **result_fsp,
-                                     int *pinfo)
+                                     int *pinfo,
+                                     const struct smb2_create_blobs *in_context_blobs,
+                                     struct smb2_create_blobs *out_context_blobs)
 {
        NTSTATUS result;
        const char* str_create_disposition;
@@ -916,7 +918,8 @@ static NTSTATUS smb_full_audit_create_file(vfs_handle_struct *handle,
                sd,                                     /* sd */
                ea_list,                                /* ea_list */
                result_fsp,                             /* result */
-               pinfo);                                 /* pinfo */
+               pinfo,                                  /* pinfo */
+               in_context_blobs, out_context_blobs);   /* create context */
 
        do_log(SMB_VFS_OP_CREATE_FILE, (NT_STATUS_IS_OK(result)), handle,
               "0x%x|%s|%s|%s", access_mask,
index 2418349298be8ad5fe0e0e1db757e2947d66cbf9..f1264c74720eec3c641de430d3ea21e1fd872f86 100644 (file)
@@ -1210,7 +1210,9 @@ static NTSTATUS mh_create_file(vfs_handle_struct *handle,
                struct security_descriptor *sd,
                struct ea_list *ea_list,
                files_struct **result_fsp,
-               int *pinfo)
+               int *pinfo,
+               const struct smb2_create_blobs *in_context_blobs,
+               struct smb2_create_blobs *out_context_blobs)
 {
        NTSTATUS status;
        struct smb_filename *clientFname;
@@ -1238,7 +1240,9 @@ static NTSTATUS mh_create_file(vfs_handle_struct *handle,
                        sd,
                        ea_list,
                        result_fsp,
-                       pinfo);
+                       pinfo,
+                       in_context_blobs,
+                       out_context_blobs);
                goto out;
        }
 
@@ -1275,7 +1279,9 @@ static NTSTATUS mh_create_file(vfs_handle_struct *handle,
                sd,
                ea_list,
                result_fsp,
-               pinfo);
+               pinfo,
+               in_context_blobs,
+               out_context_blobs);
 err:
        TALLOC_FREE(clientFname);
 out:
index 243238a99e76fe2a93c0feef8c9b5a7c50e10dda..4ce9238a2c44061454931722954dd43a0c3a2843 100644 (file)
@@ -502,7 +502,9 @@ static NTSTATUS smb_time_audit_create_file(vfs_handle_struct *handle,
                                           struct security_descriptor *sd,
                                           struct ea_list *ea_list,
                                           files_struct **result_fsp,
-                                          int *pinfo)
+                                          int *pinfo,
+                                          const struct smb2_create_blobs *in_context_blobs,
+                                          struct smb2_create_blobs *out_context_blobs)
 {
        NTSTATUS result;
        struct timespec ts1,ts2;
@@ -526,7 +528,8 @@ static NTSTATUS smb_time_audit_create_file(vfs_handle_struct *handle,
                sd,                                     /* sd */
                ea_list,                                /* ea_list */
                result_fsp,                             /* result */
-               pinfo);
+               pinfo,
+               in_context_blobs, out_context_blobs);   /* create context */
        clock_gettime_mono(&ts2);
        timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
 
index 3097419f309ebe85a453511f80e2ba6e84754767..9638d96053484e66dc472a921d9b1d858b284aee 100644 (file)
@@ -38,7 +38,9 @@ static NTSTATUS vfs_worm_create_file(vfs_handle_struct *handle,
                                     struct security_descriptor *sd,
                                     struct ea_list *ea_list,
                                     files_struct **result,
-                                    int *pinfo)
+                                    int *pinfo,
+                                    const struct smb2_create_blobs *in_context_blobs,
+                                    struct smb2_create_blobs *out_context_blobs)
 {
        bool readonly = false;
        const uint32_t write_access_flags =
@@ -64,7 +66,8 @@ static NTSTATUS vfs_worm_create_file(vfs_handle_struct *handle,
                handle, req, root_dir_fid, smb_fname, access_mask,
                share_access, create_disposition, create_options,
                file_attributes, oplock_request, lease, allocation_size,
-               private_flags, sd, ea_list, result, pinfo);
+               private_flags, sd, ea_list, result, pinfo,
+               in_context_blobs, out_context_blobs);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
index 3a3a3396c88033b682aa61176a6feeb0e9825167..137df165fd31ac2c93887c53183c09f24fe60b2e 100644 (file)
@@ -537,7 +537,8 @@ static int file_version_is_newer(connection_struct *conn, fstring new_file, fstr
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                /* Old file not found, so by definition new file is in fact newer */
@@ -591,7 +592,8 @@ static int file_version_is_newer(connection_struct *conn, fstring new_file, fstr
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                /* New file not found, this shouldn't occur if the caller did its job */
@@ -770,7 +772,8 @@ static uint32 get_correct_cversion(struct auth_session_info *session_info,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(nt_status)) {
                DEBUG(3,("get_correct_cversion: Can't open file [%s], errno = "
index 5c26f15bafad560c25f7baabaf5aa7b18d7e7460..7e422724e5c4dd266f3437548151a08690ff6f02 100644 (file)
@@ -2364,7 +2364,8 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(nt_status)) {
                DEBUG(3,("_srvsvc_NetGetFileSecurity: can't open %s\n",
@@ -2512,7 +2513,8 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(nt_status)) {
                DEBUG(3,("_srvsvc_NetSetFileSecurity: can't open %s\n",
index 162684b3478e5106865cef1df08a85520aafd719..6fd5d69587a4a2afc4d7a569fa341f98182ae62d 100644 (file)
@@ -1147,7 +1147,8 @@ static NTSTATUS get_file_handle_for_metadata(connection_struct *conn,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                ret_fsp,                                /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (NT_STATUS_IS_OK(status)) {
                *need_close = true;
index edad3e48e86948df5b256cae6f26dc5a162d795b..4423a44cbeabb183d8a5964747f856a6cf7360dd 100644 (file)
@@ -579,7 +579,8 @@ void reply_ntcreate_and_X(struct smb_request *req)
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                if (open_was_deferred(req->xconn, req->mid)) {
@@ -1186,7 +1187,8 @@ static void call_nt_transact_create(connection_struct *conn,
                sd,                                     /* sd */
                ea_list,                                /* ea_list */
                &fsp,                                   /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if(!NT_STATUS_IS_OK(status)) {
                if (open_was_deferred(req->xconn, req->mid)) {
@@ -1430,7 +1432,8 @@ static NTSTATUS copy_internals(TALLOC_CTX *ctx,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp1,                                  /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                goto out;
@@ -1455,7 +1458,8 @@ static NTSTATUS copy_internals(TALLOC_CTX *ctx,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp2,                                  /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                close_file(NULL, fsp1, ERROR_CLOSE);
index f5ad900f749a892015e8dd625de4c02861179131..c6b67f4ae6864d0544b7a489fa44b0cdceed615f 100644 (file)
@@ -3703,7 +3703,8 @@ NTSTATUS create_directory(connection_struct *conn, struct smb_request *req,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (NT_STATUS_IS_OK(status)) {
                close_file(req, fsp, NORMAL_CLOSE);
@@ -3882,7 +3883,8 @@ NTSTATUS open_streams_for_delete(connection_struct *conn,
                         NULL,                  /* sd */
                         NULL,                  /* ea_list */
                         &streams[i],           /* result */
-                        NULL);                 /* pinfo */
+                        NULL,                  /* pinfo */
+                        NULL, NULL);           /* create context */
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(10, ("Could not open stream %s: %s\n",
@@ -4831,7 +4833,9 @@ NTSTATUS create_file_default(connection_struct *conn,
                             struct security_descriptor *sd,
                             struct ea_list *ea_list,
                             files_struct **result,
-                            int *pinfo)
+                            int *pinfo,
+                            const struct smb2_create_blobs *in_context_blobs,
+                            struct smb2_create_blobs *out_context_blobs)
 {
        int info = FILE_WAS_OPENED;
        files_struct *fsp = NULL;
index 702da2e8390a6e91527d979e766fc70342768c83..e40a77b4e8ceaa18538447a88985250d264711ba 100644 (file)
@@ -648,9 +648,11 @@ NTSTATUS create_file_default(connection_struct *conn,
                             uint32_t private_flags,
                             struct security_descriptor *sd,
                             struct ea_list *ea_list,
-
                             files_struct **result,
-                            int *pinfo);
+                            int *pinfo,
+                            const struct smb2_create_blobs *in_context_blobs,
+                            struct smb2_create_blobs *out_context_blobs);
+
 NTSTATUS get_relative_fid_filename(connection_struct *conn,
                                   struct smb_request *req,
                                   uint16_t root_dir_fid,
index 9b3ed65447377bceee1ef14e50eec7a273d7ac0c..fd4ec53aed82441f94f673cc283eae7a24460d1d 100644 (file)
@@ -2009,7 +2009,8 @@ void reply_open(struct smb_request *req)
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                if (open_was_deferred(req->xconn, req->mid)) {
@@ -2178,7 +2179,8 @@ void reply_open_and_X(struct smb_request *req)
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               &smb_action);                           /* pinfo */
+               &smb_action,                            /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                if (open_was_deferred(req->xconn, req->mid)) {
@@ -2426,7 +2428,8 @@ void reply_mknew(struct smb_request *req)
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                if (open_was_deferred(req->xconn, req->mid)) {
@@ -2554,7 +2557,8 @@ void reply_ctemp(struct smb_request *req)
                        NULL,                                   /* sd */
                        NULL,                                   /* ea_list */
                        &fsp,                                   /* result */
-                       NULL);                                  /* pinfo */
+                       NULL,                                   /* pinfo */
+                       NULL, NULL);                            /* create context */
 
                if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_COLLISION)) {
                        TALLOC_FREE(fname);
@@ -2772,7 +2776,8 @@ static NTSTATUS do_unlink(connection_struct *conn,
                 NULL,                  /* sd */
                 NULL,                  /* ea_list */
                 &fsp,                  /* result */
-                NULL);                 /* pinfo */
+                NULL,                  /* pinfo */
+                NULL, NULL);           /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(10, ("SMB_VFS_CREATEFILE failed: %s\n",
@@ -6039,7 +6044,8 @@ void reply_rmdir(struct smb_request *req)
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                if (open_was_deferred(req->xconn, req->mid)) {
@@ -6807,7 +6813,8 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx,
                        NULL,                           /* sd */
                        NULL,                           /* ea_list */
                        &fsp,                           /* result */
-                       NULL);                          /* pinfo */
+                       NULL,                           /* pinfo */
+                       NULL, NULL);                    /* create context */
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(3, ("Could not open rename source %s: %s\n",
@@ -6954,7 +6961,8 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx,
                        NULL,                           /* sd */
                        NULL,                           /* ea_list */
                        &fsp,                           /* result */
-                       NULL);                          /* pinfo */
+                       NULL,                           /* pinfo */
+                       NULL, NULL);                    /* create context */
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(3,("rename_internals: SMB_VFS_CREATE_FILE "
@@ -7224,7 +7232,8 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp1,                                  /* result */
-               NULL);                                  /* psbuf */
+               NULL,                                   /* psbuf */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                goto out;
@@ -7254,7 +7263,8 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp2,                                  /* result */
-               NULL);                                  /* psbuf */
+               NULL,                                   /* psbuf */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                close_file(NULL, fsp1, ERROR_CLOSE);
index 662d5b95dd0d4541f4d1418e38b2902292b8bdec..c9cc9bd0d7daf16ce8f758c4e30c64aa25b60870 100644 (file)
@@ -1071,7 +1071,9 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                                                     sec_desc,
                                                     ea_list,
                                                     &result,
-                                                    &info);
+                                                    &info,
+                                                    &in_context_blobs,
+                                                    state->out_context_blobs);
                        if (!NT_STATUS_IS_OK(status)) {
                                if (open_was_deferred(smb1req->xconn, smb1req->mid)) {
                                        SMBPROFILE_IOBYTES_ASYNC_SET_IDLE(smb2req->profile);
index 60128efdf3a794f5f6272b322ad00d2e019d7101..e2640e4f528f96cf5957210ae150624752c4ce99 100644 (file)
@@ -1227,7 +1227,8 @@ static void call_trans2open(connection_struct *conn,
                NULL,                                   /* sd */
                ea_list,                                /* ea_list */
                &fsp,                                   /* result */
-               &smb_action);                           /* psbuf */
+               &smb_action,                            /* psbuf */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                if (open_was_deferred(req->xconn, req->mid)) {
@@ -5995,7 +5996,8 @@ static NTSTATUS smb_set_file_size(connection_struct *conn,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &new_fsp,                               /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        TALLOC_FREE(smb_fname_tmp);
 
@@ -6981,7 +6983,8 @@ static NTSTATUS smb_set_file_allocation_info(connection_struct *conn,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &new_fsp,                               /* result */
-               NULL);                                  /* pinfo */
+               NULL,                                   /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                /* NB. We check for open_was_deferred in the caller. */
@@ -7497,7 +7500,8 @@ static NTSTATUS smb_posix_mkdir(connection_struct *conn,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
         if (NT_STATUS_IS_OK(status)) {
                 close_file(req, fsp, NORMAL_CLOSE);
@@ -7730,7 +7734,8 @@ static NTSTATUS smb_posix_open(connection_struct *conn,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                return status;
@@ -7861,7 +7866,8 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
                NULL,                                   /* sd */
                NULL,                                   /* ea_list */
                &fsp,                                   /* result */
-               &info);                                 /* pinfo */
+               &info,                                  /* pinfo */
+               NULL, NULL);                            /* create context */
 
        if (!NT_STATUS_IS_OK(status)) {
                return status;
index 4b9696393ab382b14d545244fb418dedd937395f..51362c3c3bc8613fc1d31b48305564dbf828ca84 100644 (file)
@@ -1545,7 +1545,9 @@ NTSTATUS smb_vfs_call_create_file(struct vfs_handle_struct *handle,
                                  struct security_descriptor *sd,
                                  struct ea_list *ea_list,
                                  files_struct **result,
-                                 int *pinfo)
+                                 int *pinfo,
+                                 const struct smb2_create_blobs *in_context_blobs,
+                                 struct smb2_create_blobs *out_context_blobs)
 {
        VFS_FIND(create_file);
        return handle->fns->create_file_fn(
@@ -1553,7 +1555,7 @@ NTSTATUS smb_vfs_call_create_file(struct vfs_handle_struct *handle,
                share_access, create_disposition, create_options,
                file_attributes, oplock_request, lease, allocation_size,
                private_flags, sd, ea_list,
-               result, pinfo);
+               result, pinfo, in_context_blobs, out_context_blobs);
 }
 
 int smb_vfs_call_close(struct vfs_handle_struct *handle,