Browse Source

Corrected handling of SMB_COM_RENAME

Tal Aloni 8 năm trước cách đây
mục cha
commit
68a7552d6a
1 tập tin đã thay đổi với 3 bổ sung5 xóa
  1. 3 5
      SMBLibrary/Server/SMB1/SMB1FileStoreHelper.cs

+ 3 - 5
SMBLibrary/Server/SMB1/SMB1FileStoreHelper.cs

@@ -62,14 +62,12 @@ namespace SMBLibrary.Server.SMB1
             object handle;
             FileStatus fileStatus;
             CreateOptions createOptions = 0;
-            if (searchAttributes == SMBFileAttributes.Normal)
+            // Windows 2000 SP4 clients will use this command to rename directories.
+            // Hidden, System and Directory attributes are inclusive.
+            if ((searchAttributes & SMBFileAttributes.Directory) == 0)
             {
                 createOptions = CreateOptions.FILE_NON_DIRECTORY_FILE;
             }
-            else if ((searchAttributes & SMBFileAttributes.Directory) > 0)
-            {
-                createOptions = CreateOptions.FILE_DIRECTORY_FILE;
-            }
             NTStatus openStatus = fileStore.CreateFile(out handle, out fileStatus, oldName, DirectoryAccessMask.DELETE, 0, CreateDisposition.FILE_OPEN, createOptions, securityContext);
             if (openStatus != NTStatus.STATUS_SUCCESS)
             {