dissect.volume 3.14.dev1__tar.gz → 3.14.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. dissect_volume-3.14.dev3/.git-blame-ignore-revs +6 -0
  2. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/PKG-INFO +1 -1
  3. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/lvm/c_lvm2.py +2 -0
  4. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/md/c_md.py +2 -0
  5. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/md/md.py +19 -8
  6. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect.volume.egg-info/PKG-INFO +1 -1
  7. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect.volume.egg-info/SOURCES.txt +1 -0
  8. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_md.py +9 -1
  9. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/.gitattributes +0 -0
  10. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/COPYRIGHT +0 -0
  11. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/LICENSE +0 -0
  12. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/MANIFEST.in +0 -0
  13. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/README.md +0 -0
  14. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/__init__.py +0 -0
  15. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/ddf/__init__.py +0 -0
  16. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/ddf/c_ddf.py +0 -0
  17. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/ddf/ddf.py +0 -0
  18. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/__init__.py +0 -0
  19. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/disk.py +0 -0
  20. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/partition.py +0 -0
  21. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/schemes/__init__.py +0 -0
  22. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/schemes/apm.py +0 -0
  23. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/schemes/bsd.py +0 -0
  24. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/schemes/gpt.py +0 -0
  25. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/disk/schemes/mbr.py +0 -0
  26. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/dm/__init__.py +0 -0
  27. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/dm/btree.py +0 -0
  28. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/dm/c_dm.py +0 -0
  29. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/dm/thin.py +0 -0
  30. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/exceptions.py +0 -0
  31. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/ldm.py +0 -0
  32. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/lvm/__init__.py +0 -0
  33. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/lvm/lvm2.py +0 -0
  34. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/lvm/metadata.py +0 -0
  35. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/lvm/physical.py +0 -0
  36. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/md/__init__.py +0 -0
  37. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/raid/__init__.py +0 -0
  38. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/raid/raid.py +0 -0
  39. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/raid/stream.py +0 -0
  40. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/vinum/__init__.py +0 -0
  41. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/vinum/c_vinum.py +0 -0
  42. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/vinum/config.py +0 -0
  43. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/vinum/vinum.py +0 -0
  44. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect/volume/vss.py +0 -0
  45. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect.volume.egg-info/dependency_links.txt +0 -0
  46. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect.volume.egg-info/requires.txt +0 -0
  47. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/dissect.volume.egg-info/top_level.txt +0 -0
  48. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/pyproject.toml +0 -0
  49. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/setup.cfg +0 -0
  50. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/__init__.py +0 -0
  51. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/conftest.py +0 -0
  52. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/apm.bin +0 -0
  53. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/bsd.bin +0 -0
  54. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/bsd64.bin.gz +0 -0
  55. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid0-1.bin.gz +0 -0
  56. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid0-2.bin.gz +0 -0
  57. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid0-3.bin.gz +0 -0
  58. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid0-raid1-1.bin.gz +0 -0
  59. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid0-raid1-2.bin.gz +0 -0
  60. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid1-1.bin.gz +0 -0
  61. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid1-2.bin.gz +0 -0
  62. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid10-1.bin.gz +0 -0
  63. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid10-2.bin.gz +0 -0
  64. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid10-3.bin.gz +0 -0
  65. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid10-4.bin.gz +0 -0
  66. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid4-1.bin.gz +0 -0
  67. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid4-2.bin.gz +0 -0
  68. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid5-1.bin.gz +0 -0
  69. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid5-2.bin.gz +0 -0
  70. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid5-3.bin.gz +0 -0
  71. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid6-1.bin.gz +0 -0
  72. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid6-2.bin.gz +0 -0
  73. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid6-3.bin.gz +0 -0
  74. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/ddf/ddf-raid6-4.bin.gz +0 -0
  75. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/dm/dm-thin-data.bin.gz +0 -0
  76. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/dm/dm-thin-empty-data.bin.gz +0 -0
  77. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/dm/dm-thin-empty-metadata.bin.gz +0 -0
  78. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/dm/dm-thin-metadata.bin.gz +0 -0
  79. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/gpt.bin +0 -0
  80. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/gpt_4k.bin +0 -0
  81. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/gpt_esxi.bin +0 -0
  82. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/gpt_hybrid.bin +0 -0
  83. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/gpt_no_name_xff.bin +0 -0
  84. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/lvm/lvm-mirror-1.bin.gz +0 -0
  85. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/lvm/lvm-mirror-2.bin.gz +0 -0
  86. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/lvm/lvm-thin.bin.gz +0 -0
  87. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/lvm/lvm.bin.gz +0 -0
  88. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/mbr.bin +0 -0
  89. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-90-1.bin.gz +0 -0
  90. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-90-2.bin.gz +0 -0
  91. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-90-raid1-1.bin.gz +0 -0
  92. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-90-raid1-2.bin.gz +0 -0
  93. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-linear-1.bin.gz +0 -0
  94. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-linear-2.bin.gz +0 -0
  95. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid0-1.bin.gz +0 -0
  96. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid0-2.bin.gz +0 -0
  97. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid0-3.bin.gz +0 -0
  98. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid1-1.bin.gz +0 -0
  99. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid1-2.bin.gz +0 -0
  100. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid10-1.bin.gz +0 -0
  101. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid10-2.bin.gz +0 -0
  102. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid4-1.bin.gz +0 -0
  103. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid4-2.bin.gz +0 -0
  104. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid4-3.bin.gz +0 -0
  105. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid5-1.bin.gz +0 -0
  106. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid5-2.bin.gz +0 -0
  107. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid5-3.bin.gz +0 -0
  108. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid6-1.bin.gz +0 -0
  109. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid6-2.bin.gz +0 -0
  110. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid6-3.bin.gz +0 -0
  111. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/md/md-raid6-4.bin.gz +0 -0
  112. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-concat_diska.bin.gz +0 -0
  113. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-concat_diskb.bin.gz +0 -0
  114. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-mirror_diska.bin.gz +0 -0
  115. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-mirror_diskb.bin.gz +0 -0
  116. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-raid5_diska.bin.gz +0 -0
  117. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-raid5_diskb.bin.gz +0 -0
  118. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-raid5_diskc.bin.gz +0 -0
  119. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-raid5_diskd.bin.gz +0 -0
  120. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-striped_diska.bin.gz +0 -0
  121. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-striped_diskb.bin.gz +0 -0
  122. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-stripedmirror_diska.bin.gz +0 -0
  123. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-stripedmirror_diskb.bin.gz +0 -0
  124. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-stripedmirror_diskc.bin.gz +0 -0
  125. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/data/vinum/vinum-stripedmirror_diskd.bin.gz +0 -0
  126. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/docs/Makefile +0 -0
  127. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/docs/conf.py +0 -0
  128. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/docs/index.rst +0 -0
  129. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_apm.py +0 -0
  130. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_bsd.py +0 -0
  131. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_ddf.py +0 -0
  132. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_dm.py +0 -0
  133. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_gpt.py +0 -0
  134. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_lvm.py +0 -0
  135. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_mbr.py +0 -0
  136. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_vinum.py +0 -0
  137. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tests/test_vinum_config.py +0 -0
  138. {dissect_volume-3.14.dev1 → dissect_volume-3.14.dev3}/tox.ini +0 -0
@@ -0,0 +1,6 @@
1
+ # Formatting commits. You can ignore them during git-blame with `--ignore-rev` or `--ignore-revs-file`.
2
+ #
3
+ # $ git config --add 'blame.ignoreRevsFile' '.git-blame-ignore-revs'
4
+ #
5
+ # Change linter to Ruff (#44)
6
+ 8fefd76a54ff43b2fdbedbbb3cd330c27b1a0b14
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dissect.volume
3
- Version: 3.14.dev1
3
+ Version: 3.14.dev3
4
4
  Summary: A Dissect module implementing a parser for different disk volume and partition systems, for example LVM2, GPT and MBR
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from dissect.cstruct import cstruct
2
4
 
3
5
  lvm_def = """
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from dissect.cstruct import cstruct
2
4
 
3
5
  md_def = """
@@ -143,14 +143,23 @@ class MDPhysicalDisk(PhysicalDisk):
143
143
  super().__init__(fh, self.data_offset * SECTOR_SIZE, self.data_size * SECTOR_SIZE)
144
144
 
145
145
 
146
- def find_super_block(fh: BinaryIO) -> tuple[int, int, int]:
147
- # Super block can start at a couple of places, depending on version
148
- # Just try them all until we find one
146
+ def find_super_block(fh: BinaryIO) -> tuple[int | None, int | None, int | None]:
147
+ """Find the super block of an MD device.
149
148
 
150
- size = fh.size if hasattr(fh, "size") else fh.seek(0, io.SEEK_END)
149
+ Args:
150
+ fh: The file-like object to search for the super block.
151
+
152
+ Returns:
153
+ A tuple containing the sector, major version, and minor version of the super block, or a
154
+ tuple of ``None`` if no super block was found.
155
+ """
156
+
157
+ size = fh.size if (hasattr(fh, "size") and fh.size is not None) else fh.seek(0, io.SEEK_END)
151
158
  size //= SECTOR_SIZE
152
159
 
153
- possible_offsets = [
160
+ # Super block can start at a couple of places, depending on version
161
+ # Just try them all until we find one
162
+ possible_sectors = [
154
163
  # 0.90.0
155
164
  (size & ~(c_md.MD_RESERVED_SECTORS - 1)) - c_md.MD_RESERVED_SECTORS,
156
165
  # Major version 1
@@ -162,16 +171,18 @@ def find_super_block(fh: BinaryIO) -> tuple[int, int, int]:
162
171
  8,
163
172
  ]
164
173
 
165
- for offset in possible_offsets:
166
- fh.seek(offset * SECTOR_SIZE)
174
+ for sector in possible_sectors:
175
+ if sector < 0:
176
+ continue
167
177
 
178
+ fh.seek(sector * SECTOR_SIZE)
168
179
  peek = fh.read(12)
169
180
  if len(peek) != 12:
170
181
  continue
171
182
 
172
183
  magic, major, minor = struct.unpack("<3I", peek)
173
184
  if magic == c_md.MD_SB_MAGIC:
174
- return offset, major, minor
185
+ return sector, major, minor
175
186
 
176
187
  return None, None, None
177
188
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dissect.volume
3
- Version: 3.14.dev1
3
+ Version: 3.14.dev3
4
4
  Summary: A Dissect module implementing a parser for different disk volume and partition systems, for example LVM2, GPT and MBR
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -1,3 +1,4 @@
1
+ .git-blame-ignore-revs
1
2
  .gitattributes
2
3
  COPYRIGHT
3
4
  LICENSE
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from io import BytesIO
3
4
  from typing import BinaryIO
4
5
 
5
6
  import pytest
6
7
 
7
- from dissect.volume.md.md import MD
8
+ from dissect.volume.md.md import MD, find_super_block
8
9
  from dissect.volume.raid.stream import RAID0Stream
9
10
 
10
11
 
@@ -61,3 +62,10 @@ def test_md_raid0_zones(md_raid0: list[BinaryIO]) -> None:
61
62
  assert fh.zones[1].zone_end == 5242880
62
63
  assert fh.zones[1].dev_start == 1048576
63
64
  assert len(fh.zones[1].devices) == 2
65
+
66
+
67
+ def test_md_search_sb_none_size() -> None:
68
+ fh = BytesIO()
69
+ fh.size = None
70
+
71
+ assert find_super_block(fh) == (None, None, None)