[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