Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e86d1bcc authored by Tianjie Xu's avatar Tianjie Xu
Browse files

Preserve the monotonic property when subtracting 0 block

The monotonic property of the range is lost after the recent change to
subtract 0th block from the file range. As a result, we read the block
in the wrong order when pull files from the raw image. This yields a
incorrect hash during validation.

Bug: 150334561
Test: run validate_target_file. unittests
Change-Id: Id4fedaaf273c42c8d21a4549fda4c9a45e22066a
(cherry picked from commit f02ececc)
parent 7b285149
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -250,13 +250,17 @@ class SparseImage(object):
    with open(fn) as f:
      for line in f:
        fn, ranges_text = line.rstrip().split(None, 1)
        ranges = rangelib.RangeSet.parse(ranges_text)
        raw_ranges = rangelib.RangeSet.parse(ranges_text)

        # Note: e2fsdroid records holes in the extent tree as "0" blocks.
        # This causes confusion because clobbered_blocks always includes
        # the superblock (physical block #0). Since the 0 blocks here do
        # not represent actual physical blocks, remove them from the set.
        ranges = ranges.subtract(rangelib.RangeSet("0"))
        ranges = raw_ranges.subtract(rangelib.RangeSet("0"))
        # b/150334561 we need to perserve the monotonic property of the raw
        # range. Otherwise, the validation script will read the blocks with
        # wrong order when pulling files from the image.
        ranges.monotonic = raw_ranges.monotonic
        ranges.extra['text_str'] = ranges_text

        if allow_shared_blocks: