[PATCH] two corner case fixes to shadow_copy2

Jeremy Allison jra at samba.org
Tue Apr 11 18:27:40 UTC 2017


On Tue, Apr 11, 2017 at 12:53:25PM +0200, Michael Adam via samba-technical wrote:
> Hi all,
> 
> we are hitting a regression with Samba 4.6 and the
> combination of the shadow_copy2 and glusterfs vfs
> modules.
> 
> It seems to have been introduced by the patches of
> https://bugzilla.samba.org/show_bug.cgi?id=12531
> 
> It's my fault that I did not notice the patches
> and the request for review at that time... :-)
> 
> I still need to do more analysis and testing,
> but it seems that there are two corner cases
> that are at least hit when using the glusterfs
> vfs module that mimicks the share root to "/":
> 
> 1) make_relative_path does not treat the
>    case of cwd == "/" correctly.
> 
> 2) shadow_copy2_strip_snapshot does not treat the
>    corner case where the name only consists of
>    "/" followed by the @GMT-token correctly.
> 
> These corner cases are not coverered by our
> test cases, and as I said, I need to do more
> testing (e.g. if this is all), but attached find
> two patches that fix the above corner cases
> in a rahter obvious way.
> 
> Thanks for review...

Yep, good catch. Wish you'd found these
earlier (I did ask :-). Never mind, better
late than never.

RB+. Pushed, with an update to the comments
inline.

Jeremy.

> From 76e15576e3144ca87bca3dee0ddba9f60ba04fed Mon Sep 17 00:00:00 2001
> From: Michael Adam <obnox at samba.org>
> Date: Tue, 11 Apr 2017 12:03:20 +0200
> Subject: [PATCH 1/2] s3:vfs:shadow_copy2: fix the corner case if cwd=/ in
>  make_relative_path
> 
> Signed-off-by: Michael Adam <obnox at samba.org>
> ---
>  source3/modules/vfs_shadow_copy2.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
> index f3ec8b6..550c953 100644
> --- a/source3/modules/vfs_shadow_copy2.c
> +++ b/source3/modules/vfs_shadow_copy2.c
> @@ -444,7 +444,10 @@ static bool make_relative_path(const char *cwd, char *abs_path)
>  	if (memcmp(abs_path, cwd, cwd_len) != 0) {
>  		return false;
>  	}
> -	if (abs_path[cwd_len] != '/' && abs_path[cwd_len] != '\0') {
> +	if (cwd_len != 1 &&
> +	    abs_path[cwd_len] != '/' &&
> +	    abs_path[cwd_len] != '\0')
> +	{
>  		return false;
>  	}
>  	if (abs_path[cwd_len] == '/') {
> -- 
> 2.9.3
> 
> 
> From 6b095855ecc3038a03278e81f53398bc7c35a8bf Mon Sep 17 00:00:00 2001
> From: Michael Adam <obnox at samba.org>
> Date: Tue, 11 Apr 2017 12:03:52 +0200
> Subject: [PATCH 2/2] s3:vfs:shadow_copy2: fix corner case of "/@GMT-token" in
>  shadow_copy2_strip_snapshot
> 
> Signed-off-by: Michael Adam <obnox at samba.org>
> ---
>  source3/modules/vfs_shadow_copy2.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
> index 550c953..d06e321 100644
> --- a/source3/modules/vfs_shadow_copy2.c
> +++ b/source3/modules/vfs_shadow_copy2.c
> @@ -670,10 +670,11 @@ static bool shadow_copy2_strip_snapshot_internal(TALLOC_CTX *mem_ctx,
>  		 * with a path prefix.
>  		 */
>  		if (pstripped != NULL) {
> -			if (len_before_gmt > 0) {
> +			if (len_before_gmt > 1) {
>  				/*
> -				 * There is a slash before
> -				 * the @GMT-. Remove it.
> +				 * There is a path (and not only a slash)
> +				 * before the @GMT-. Remove the trailing
> +				 * slash character.
>  				 */
>  				len_before_gmt -= 1;
>  			}
> -- 
> 2.9.3
> 






More information about the samba-technical mailing list