From ba83d201486e864263caca23f2254250a35890f4 Mon Sep 17 00:00:00 2001 From: anujbillore-0-0 Date: Tue, 10 Mar 2026 01:27:13 +0530 Subject: [PATCH] btrfs: Add more validation checks in IsValid() Check that sector_size and node_size are powers of 2, that node_size >= sector_size, total_size is non-zero, and num_devices is non-zero. Addresses the TODO comment in IsValid(). Change-Id: Id2c084f6b649a0315de1454a072ab1dcf3d0a3dd Reviewed-on: https://review.haiku-os.org/c/haiku/+/10448 Haiku-Format: Haiku-format Bot Reviewed-by: Adrien Destugues --- src/add-ons/kernel/file_systems/btrfs/Volume.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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; }