From b40fb6eec55cecc30d7500bb6b9799e2e9324f44 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Jacke?= Date: Wed, 4 Jul 2012 00:33:41 +0200 Subject: [PATCH] s3: if we know a file is immutable, report it to be readonly on *BSD we get the immutable flag via st_flags, we should use that if possible. --- source3/smbd/dosmode.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c index 823d44d0aa..747ba2169a 100644 --- a/source3/smbd/dosmode.c +++ b/source3/smbd/dosmode.c @@ -170,6 +170,12 @@ static uint32 dos_mode_from_sbuf(connection_struct *conn, int result = 0; enum mapreadonly_options ro_opts = (enum mapreadonly_options)lp_map_readonly(SNUM(conn)); +#if defined(UF_IMMUTABLE) && defined(SF_IMMUTABLE) + /* if we can find out if a file is immutable we should report it r/o */ + if (smb_fname->st.st_ex_flags & (UF_IMMUTABLE | SF_IMMUTABLE)) { + result |= FILE_ATTRIBUTE_READONLY; + } +#endif if (ro_opts == MAP_READONLY_YES) { /* Original Samba method - map inverse of user "w" bit. */ if ((smb_fname->st.st_ex_mode & S_IWUSR) == 0) { -- 2.34.1