[PATCH] s3/smbd: set FILE_ATTRIBUTE_DIRECTORY as necessary
Ralph Böhme
slow at samba.org
Wed Sep 14 13:52:41 UTC 2016
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.
Cheerio!
-slow
-------------- next part --------------
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