s3: if we know a file is immutable, report it to be readonly
authorBjörn Jacke <bj@sernet.de>
Tue, 3 Jul 2012 22:33:41 +0000 (00:33 +0200)
committerBjoern Jacke <bj@sernet.de>
Wed, 4 Jul 2012 10:01:20 +0000 (12:01 +0200)
on *BSD we get the immutable flag via st_flags, we should use that if possible.

source3/smbd/dosmode.c

index 823d44d0aaf08f64190fcf5f178e29be584d74c5..747ba2169a03eeea0b2931cb5d364c35db7b53ae 100644 (file)
@@ -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) {