diff --git a/src/add-ons/kernel/file_systems/btrfs/Volume.cpp b/src/add-ons/kernel/file_systems/btrfs/Volume.cpp index ee100fcdaf..efa7140e04 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Volume.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/Volume.cpp @@ -49,10 +49,21 @@ btrfs_super_block::IsMagicValid() const bool btrfs_super_block::IsValid() const { - // TODO: check some more values! if (!IsMagicValid()) return false; + if (SectorSize() < 512 || (SectorSize() & (SectorSize() - 1)) != 0) + return false; + + if (BlockSize() < SectorSize() || (BlockSize() & (BlockSize() - 1)) != 0) + return false; + + if (TotalSize() == 0) + return false; + + if (B_LENDIAN_TO_HOST_INT64(num_devices) == 0) + return false; + return true; }