diff --git a/libcli/smb/smb2_create_ctx.h b/libcli/smb/smb2_create_ctx.h index cb194f5..1c65e6c 100644 --- a/libcli/smb/smb2_create_ctx.h +++ b/libcli/smb/smb2_create_ctx.h @@ -30,7 +30,7 @@ /* "AAPL" Server Query request/response bitmap */ #define SMB2_CRTCTX_AAPL_SERVER_CAPS 1 -#define SMB2_CRTCTX_AAPL_VOLUME_CAPS 2 +#define SMB2_CRTCTX_AAPL_VOLUME_CAPS 6 #define SMB2_CRTCTX_AAPL_MODEL_INFO 4 /* "AAPL" Client/Server Capabilities bitmap */ @@ -42,5 +42,6 @@ /* "AAPL" Volume Capabilities bitmap */ #define SMB2_CRTCTX_AAPL_SUPPORT_RESOLVE_ID 1 #define SMB2_CRTCTX_AAPL_CASE_SENSITIVE 2 +#define SMB2_CRTCTX_AAPL_FULL_SYNC 4 #endif diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c index 6e7899aa..2ad31f7 100644 --- a/source3/modules/vfs_fruit.c +++ b/source3/modules/vfs_fruit.c @@ -1827,6 +1827,7 @@ static NTSTATUS check_aapl(vfs_handle_struct *handle, DATA_BLOB blob = data_blob_talloc(req, NULL, 0); uint64_t req_bitmap, client_caps; uint64_t server_caps = SMB2_CRTCTX_AAPL_UNIX_BASED; + uint64_t volume_caps; smb_ucs2_t *model; size_t modellen; @@ -1898,7 +1899,8 @@ static NTSTATUS check_aapl(vfs_handle_struct *handle, if (req_bitmap & SMB2_CRTCTX_AAPL_VOLUME_CAPS) { SBVAL(p, 0, lp_case_sensitive(SNUM(handle->conn->tcon->compat)) ? - SMB2_CRTCTX_AAPL_CASE_SENSITIVE : 0); + volume_caps |= SMB2_CRTCTX_AAPL_CASE_SENSITIVE : 0); + SBVAL(p, 0, volume_caps |= SMB2_CRTCTX_AAPL_FULL_SYNC); ok = data_blob_append(req, &blob, p, 8); if (!ok) { return NT_STATUS_UNSUCCESSFUL;