]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: Return FILE_ATTRIBUTE_REPARSE_POINT from "user.DOSATTRIB"
authorVolker Lendecke <vl@samba.org>
Fri, 2 Dec 2022 14:02:18 +0000 (15:02 +0100)
committerJeremy Allison <jra@samba.org>
Mon, 6 May 2024 20:55:37 +0000 (20:55 +0000)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/dosmode.c

index 674a13076e1d98d4ed557fd631e4a5186235e574..fac226459cef2acc1b775af99600f7aae1e0a3d0 100644 (file)
@@ -355,8 +355,16 @@ NTSTATUS parse_dos_attribute_blob(struct smb_filename *smb_fname,
                dosattr |= FILE_ATTRIBUTE_DIRECTORY;
        }
 
-       /* FILE_ATTRIBUTE_SPARSE is valid on get but not on set. */
-       *pattr |= (uint32_t)(dosattr & (SAMBA_ATTRIBUTES_MASK|FILE_ATTRIBUTE_SPARSE));
+       /*
+        * _SPARSE and _REPARSE_POINT are valid on get but not on
+        * set. Both are created via special fcntls.
+        */
+
+       dosattr &= (SAMBA_ATTRIBUTES_MASK|
+                   FILE_ATTRIBUTE_SPARSE|
+                   FILE_ATTRIBUTE_REPARSE_POINT);
+
+       *pattr |= dosattr;
 
        dos_mode_debug_print(__func__, *pattr);