s3:smbd: wildcard characters are allowed in stream names
authorStefan Metzmacher <metze@samba.org>
Mon, 1 Dec 2008 21:27:08 +0000 (13:27 -0800)
committerKarolin Seeger <kseeger@samba.org>
Thu, 11 Dec 2008 09:27:10 +0000 (10:27 +0100)
We only check the filename of the basefile now.

metze
(cherry picked from commit a47e8e7438133ca3bc1f1b577ccd9d0fde8baea0)

source/smbd/open.c

index 83e14f554298ce39dd395f3e5be1cfe8e775b211..7fd2855dea8b8b6c74500dbea2899e260c9af373 100644 (file)
@@ -332,6 +332,7 @@ static NTSTATUS open_file(files_struct *fsp,
        if ((open_access_mask & (FILE_READ_DATA|FILE_WRITE_DATA|FILE_APPEND_DATA|FILE_EXECUTE)) ||
            (!file_existed && (local_flags & O_CREAT)) ||
            ((local_flags & O_TRUNC) == O_TRUNC) ) {
+               const char *wild;
 
                /*
                 * We can't actually truncate here as the file may be locked.
@@ -353,8 +354,17 @@ static NTSTATUS open_file(files_struct *fsp,
 #endif
 
                /* Don't create files with Microsoft wildcard characters. */
+               if (fsp->base_fsp) {
+                       /*
+                        * wildcard characters are allowed in stream names
+                        * only test the basefilename
+                        */
+                       wild = fsp->base_fsp->fsp_name;
+               } else {
+                       wild = path;
+               }
                if ((local_flags & O_CREAT) && !file_existed &&
-                   ms_has_wild(path))  {
+                   ms_has_wild(wild))  {
                        return NT_STATUS_OBJECT_NAME_INVALID;
                }