From: Ralph Boehme Date: Wed, 26 Nov 2014 13:12:51 +0000 (+0100) Subject: s3:vfs: add create tags to SMB_VFS_CREATEFILE X-Git-Tag: tdb-1.3.4~185 X-Git-Url: http://git.samba.org/samba.git/?p=kamenim%2Fsamba-autobuild%2F.git;a=commitdiff_plain;h=142db4048f41f793d9b919a93877d547ff593c6d s3:vfs: add create tags to SMB_VFS_CREATEFILE Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c index 6e15a0675b7..b52c381572e 100644 --- a/examples/VFS/skel_opaque.c +++ b/examples/VFS/skel_opaque.c @@ -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; } diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c index b11e29c342a..925e5200350 100644 --- a/examples/VFS/skel_transparent.c +++ b/examples/VFS/skel_transparent.c @@ -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) diff --git a/source3/include/vfs.h b/source3/include/vfs.h index b10e9a54bee..1843ef428ee 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -160,6 +160,7 @@ /* 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, diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h index df676adaca0..ef97b49e7e7 100644 --- a/source3/include/vfs_macros.h +++ b/source3/include/vfs_macros.h @@ -136,13 +136,15 @@ 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)) diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 7610e659064..613101a09a9 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -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) diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c index da1ec7f31eb..9af204348a9 100644 --- a/source3/modules/vfs_fruit.c +++ b/source3/modules/vfs_fruit.c @@ -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; diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c index 489a28c58b3..c5a9c0df647 100644 --- a/source3/modules/vfs_full_audit.c +++ b/source3/modules/vfs_full_audit.c @@ -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, diff --git a/source3/modules/vfs_media_harmony.c b/source3/modules/vfs_media_harmony.c index 2418349298b..f1264c74720 100644 --- a/source3/modules/vfs_media_harmony.c +++ b/source3/modules/vfs_media_harmony.c @@ -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: diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c index 243238a99e7..4ce9238a2c4 100644 --- a/source3/modules/vfs_time_audit.c +++ b/source3/modules/vfs_time_audit.c @@ -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; diff --git a/source3/modules/vfs_worm.c b/source3/modules/vfs_worm.c index 3097419f309..9638d960534 100644 --- a/source3/modules/vfs_worm.c +++ b/source3/modules/vfs_worm.c @@ -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; } diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c index 3a3a3396c88..137df165fd3 100644 --- a/source3/printing/nt_printing.c +++ b/source3/printing/nt_printing.c @@ -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 = " diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c index 5c26f15bafa..7e422724e5c 100644 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c @@ -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", diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c index 162684b3478..6fd5d69587a 100644 --- a/source3/smbd/dosmode.c +++ b/source3/smbd/dosmode.c @@ -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; diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index edad3e48e86..4423a44cbea 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -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); diff --git a/source3/smbd/open.c b/source3/smbd/open.c index f5ad900f749..c6b67f4ae68 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -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; diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index 702da2e8390..e40a77b4e8c 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -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, diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 9b3ed654473..fd4ec53aed8 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -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); diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c index 662d5b95dd0..c9cc9bd0d7d 100644 --- a/source3/smbd/smb2_create.c +++ b/source3/smbd/smb2_create.c @@ -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); diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 60128efdf3a..e2640e4f528 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -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; diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c index 4b9696393ab..51362c3c3bc 100644 --- a/source3/smbd/vfs.c +++ b/source3/smbd/vfs.c @@ -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,