Quantcast

[PATCH] vfs_fruit case sensitivity bug

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PATCH] vfs_fruit case sensitivity bug

Samba - samba-technical mailing list
Hi!

Attached is the patch for bug 12749:

The commit message should explain what it's about. :)

Please review & push if happy. Thanks!

-slow

bug12749-master.patch (2K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] vfs_fruit case sensitivity bug

Samba - samba-technical mailing list
On Fri, Apr 21, 2017 at 12:52:57PM +0200, Ralph Böhme via samba-technical wrote:
> Hi!
>
> Attached is the patch for bug 12749:
>
> The commit message should explain what it's about. :)
>
> Please review & push if happy. Thanks!

LGTM. Pushed !

> From 1e22ab36a512eb9ed198d4a2b552846275320ff6 Mon Sep 17 00:00:00 2001
> From: Ralph Boehme <[hidden email]>
> Date: Wed, 19 Apr 2017 13:12:55 +0200
> Subject: [PATCH] vfs_fruit: lp_case_sensitive() does not return a bool
>
> lp_case_sensitive() returns an int, not a bool, so with the default
> setting of "Auto" by default we set the AAPL flag
> SMB2_CRTCTX_AAPL_CASE_SENSITIVE.
>
> This caused the client to believe the volume is case sensitive where it
> wasn't, leading to an error when trying to rename files changing only
> the case of the name.
>
> Also fix the existing torture test that verifies AAPL context
> negotiation and actually expected the server to return "case sensitive",
> while the Samba default is really "case insensitive".
>
> Bug: https://bugzilla.samba.org/show_bug.cgi?id=12749
>
> Signed-off-by: Ralph Boehme <[hidden email]>
> ---
>  source3/modules/vfs_fruit.c | 20 +++++++++++++++++---
>  source4/torture/vfs/fruit.c |  4 ++--
>  2 files changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
> index b747145..bcc4a12 100644
> --- a/source3/modules/vfs_fruit.c
> +++ b/source3/modules/vfs_fruit.c
> @@ -2201,9 +2201,23 @@ 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);
> + int val = lp_case_sensitive(SNUM(handle->conn->tcon->compat));
> + uint64_t caps = 0;
> +
> + switch (val) {
> + case Auto:
> + break;
> +
> + case True:
> + caps |= SMB2_CRTCTX_AAPL_CASE_SENSITIVE;
> + break;
> +
> + default:
> + break;
> + }
> +
> + SBVAL(p, 0, caps);
> +
>   ok = data_blob_append(req, &blob, p, 8);
>   if (!ok) {
>   return NT_STATUS_UNSUCCESSFUL;
> diff --git a/source4/torture/vfs/fruit.c b/source4/torture/vfs/fruit.c
> index 5182c00..bb8f36e 100644
> --- a/source4/torture/vfs/fruit.c
> +++ b/source4/torture/vfs/fruit.c
> @@ -2068,9 +2068,9 @@ static bool test_aapl(struct torture_context *tctx,
>   }
>  
>   aapl_vol_caps = BVAL(aapl->data.data, 24);
> - if (aapl_vol_caps != SMB2_CRTCTX_AAPL_CASE_SENSITIVE) {
> + if (aapl_vol_caps != 0) {
>   /* this will fail on a case insensitive fs ... */
> - torture_warning(tctx,
> + torture_result(tctx, TORTURE_FAIL,
>   "(%s) unexpected vol_caps: %d",
>   __location__, (int)aapl_vol_caps);
>   }
> --
> 2.9.3
>


Loading...