[PATCH] s3/smbd: set FILE_ATTRIBUTE_DIRECTORY as necessary

Jeremy Allison jra at samba.org
Wed Sep 14 20:10:54 UTC 2016


On Wed, Sep 14, 2016 at 03:52:41PM +0200, Ralph Böhme wrote:
> On Wed, Sep 14, 2016 at 03:42:04PM +0200, Ralph Böhme wrote:
> > Hi!
> > 
> > Just stumbled across this one:
> > 
> > <https://bugzilla.samba.org/show_bug.cgi?id=12261>
> > 
> > Patch attached, please review & push if ok. Thanks!
> 
> sorry, here it is.

Good catch ! Pushed.


> From 3246128f972a782543603a9d97516ddaa751d339 Mon Sep 17 00:00:00 2001
> From: Ralph Boehme <slow at samba.org>
> Date: Wed, 14 Sep 2016 12:52:48 +0200
> Subject: [PATCH] s3/smbd: set FILE_ATTRIBUTE_DIRECTORY as necessary
> 
> Some VFS modules like GPFS will always return success from
> SMB_VFS_GET_DOS_ATTRIBUTES() but only set a subset of the attributes. It
> neither sets FILE_ATTRIBUTE_NORMAL nor FILE_ATTRIBUTE_DIRECTORY.
> 
> We already handle the case that the VFS stack returns with result==0 and
> then add the FILE_ATTRIBUTE_NORMAL, regardless of the type of the
> filesystem object. If we want to handle result==0 situation in the
> SMB_VFS_GET_DOS_ATTRIBUTES() caller, then do it right by either setting
> FILE_ATTRIBUTE_NORMAL or FILE_ATTRIBUTE_DIRECTORY.
> 
> Bug: https://bugzilla.samba.org/show_bug.cgi?id=12261
> 
> Signed-off-by: Ralph Boehme <slow at samba.org>
> ---
>  source3/smbd/dosmode.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c
> index 82d495a..cc9cf95 100644
> --- a/source3/smbd/dosmode.c
> +++ b/source3/smbd/dosmode.c
> @@ -632,7 +632,11 @@ uint32_t dos_mode(connection_struct *conn, struct smb_filename *smb_fname)
>  	result |= dos_mode_from_name(conn, smb_fname, result);
>  
>  	if (result == 0) {
> -		result = FILE_ATTRIBUTE_NORMAL;
> +		if (S_ISDIR(smb_fname->st.st_ex_mode)) {
> +			result = FILE_ATTRIBUTE_DIRECTORY;
> +		} else {
> +			result = FILE_ATTRIBUTE_NORMAL;
> +		}
>  	}
>  
>  	result = filter_mode_by_protocol(result);
> -- 
> 2.7.4
> 




More information about the samba-technical mailing list