[ros-diffs] [pschweitzer] 33779: Check cluster size when mounting a volume

pschweitzer at svn.reactos.org pschweitzer at svn.reactos.org
Fri May 30 20:55:05 CEST 2008


Author: pschweitzer
Date: Fri May 30 13:55:05 2008
New Revision: 33779

URL: http://svn.reactos.org/svn/reactos?rev=33779&view=rev
Log:
Check cluster size when mounting a volume

Modified:
    trunk/reactos/drivers/filesystems/ntfs/fsctl.c

Modified: trunk/reactos/drivers/filesystems/ntfs/fsctl.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/ntfs/fsctl.c?rev=33779&r1=33778&r2=33779&view=diff
==============================================================================
--- trunk/reactos/drivers/filesystems/ntfs/fsctl.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/ntfs/fsctl.c [iso-8859-1] Fri May 30 13:55:05 2008
@@ -45,9 +45,9 @@
 {
   PARTITION_INFORMATION PartitionInfo;
   DISK_GEOMETRY DiskGeometry;
+  ULONG ClusterSize, Size, k;
   PBOOT_SECTOR BootSector;
   NTSTATUS Status;
-  ULONG Size, k;
 
   DPRINT1("NtfsHasFileSystem() called\n");
 
@@ -91,7 +91,7 @@
 
   DPRINT1("BytesPerSector: %lu\n", DiskGeometry.BytesPerSector);
   BootSector = ExAllocatePoolWithTag(NonPagedPool,
-                              DiskGeometry.BytesPerSector, TAG_NTFS);
+                                     DiskGeometry.BytesPerSector, TAG_NTFS);
   if (BootSector == NULL)
   {
     return(STATUS_INSUFFICIENT_RESOURCES);
@@ -137,6 +137,17 @@
       Status = STATUS_UNRECOGNIZED_VOLUME;
       goto ByeBye;
     }
+  }
+  /* Check cluster size */
+  ClusterSize = BootSector->BPB.BytesPerSector * BootSector->BPB.SectorsPerCluster;
+  if (ClusterSize != 512 && ClusterSize != 1024 && 
+      ClusterSize != 2048 && ClusterSize != 4096)
+  {
+    DPRINT1("Cluster size failed: %hu, %hu, %hu\n", BootSector->BPB.BytesPerSector,
+                                                    BootSector->BPB.SectorsPerCluster,
+                                                    ClusterSize);
+    Status = STATUS_UNRECOGNIZED_VOLUME;
+    goto ByeBye;
   }
 
 ByeBye:



More information about the Ros-diffs mailing list