mirror of
https://github.com/reactos/reactos.git
synced 2024-08-07 19:58:21 +00:00
Check cluster size when mounting a volume
svn path=/trunk/; revision=33779
This commit is contained in:
parent
18eca01b10
commit
4db827d152
|
@ -45,9 +45,9 @@ NtfsHasFileSystem(PDEVICE_OBJECT DeviceToMount)
|
||||||
{
|
{
|
||||||
PARTITION_INFORMATION PartitionInfo;
|
PARTITION_INFORMATION PartitionInfo;
|
||||||
DISK_GEOMETRY DiskGeometry;
|
DISK_GEOMETRY DiskGeometry;
|
||||||
|
ULONG ClusterSize, Size, k;
|
||||||
PBOOT_SECTOR BootSector;
|
PBOOT_SECTOR BootSector;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
ULONG Size, k;
|
|
||||||
|
|
||||||
DPRINT1("NtfsHasFileSystem() called\n");
|
DPRINT1("NtfsHasFileSystem() called\n");
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ NtfsHasFileSystem(PDEVICE_OBJECT DeviceToMount)
|
||||||
|
|
||||||
DPRINT1("BytesPerSector: %lu\n", DiskGeometry.BytesPerSector);
|
DPRINT1("BytesPerSector: %lu\n", DiskGeometry.BytesPerSector);
|
||||||
BootSector = ExAllocatePoolWithTag(NonPagedPool,
|
BootSector = ExAllocatePoolWithTag(NonPagedPool,
|
||||||
DiskGeometry.BytesPerSector, TAG_NTFS);
|
DiskGeometry.BytesPerSector, TAG_NTFS);
|
||||||
if (BootSector == NULL)
|
if (BootSector == NULL)
|
||||||
{
|
{
|
||||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||||
|
@ -138,6 +138,17 @@ NtfsHasFileSystem(PDEVICE_OBJECT DeviceToMount)
|
||||||
goto ByeBye;
|
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:
|
ByeBye:
|
||||||
ExFreePool(BootSector);
|
ExFreePool(BootSector);
|
||||||
|
|
Loading…
Reference in a new issue