From e6c234d31ad22120d0890b561dac9b456f8f6530 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Tue, 28 Jul 2015 19:08:02 -0700 Subject: [PATCH] Move the error handling for svhdx to vfswrap_create to give VFS module writers a chance to handle RSVD opens if they want to. Also handle a review comment by Metze. Signed-off-by: Richard Sharpe Reviewed-by: Ira Cooper Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Fri Aug 28 03:19:36 CEST 2015 on sn-devel-104 --- source3/modules/vfs_default.c | 16 ++++++++++++++++ source3/smbd/smb2_create.c | 7 ------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 460837cc999..9ea630a25ae 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -563,6 +563,22 @@ static NTSTATUS vfswrap_create_file(vfs_handle_struct *handle, const struct smb2_create_blobs *in_context_blobs, struct smb2_create_blobs *out_context_blobs) { + struct smb2_create_blob *svhdx = NULL; + + /* + * It might be empty ... and smb2_create_blob_find does not handle that + */ + if (in_context_blobs) { + svhdx = smb2_create_blob_find(in_context_blobs, + SVHDX_OPEN_DEVICE_CONTEXT); + } + + if (svhdx != NULL) { + /* SharedVHD is not yet supported */ + DEBUG(10, ("Shared VHD not yet supported, INVALID_DEVICE_REQUEST\n")); + return NT_STATUS_INVALID_DEVICE_REQUEST; + } + return create_file_default(handle->conn, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, create_options, diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c index 880ceee26a5..9f14544c62d 100644 --- a/source3/smbd/smb2_create.c +++ b/source3/smbd/smb2_create.c @@ -910,13 +910,6 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, } } - if (svhdx != NULL) { - /* SharedVHD is not yet supported */ - tevent_req_nterror( - req, NT_STATUS_INVALID_DEVICE_REQUEST); - return tevent_req_post(req, ev); - } - /* these are ignored for SMB2 */ in_create_options &= ~(0x10);/* NTCREATEX_OPTIONS_SYNC_ALERT */ in_create_options &= ~(0x20);/* NTCREATEX_OPTIONS_ASYNC_ALERT */ -- 2.11.4.GIT