[FREELDR] Handle Btrfs sparse extents (#1959)
authormaharmstone <mark@harmstone.com>
Tue, 8 Oct 2019 14:50:58 +0000 (15:50 +0100)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Tue, 8 Oct 2019 14:50:57 +0000 (16:50 +0200)
boot/freeldr/freeldr/lib/fs/btrfs.c

index aa12d0e..16a8614 100644 (file)
@@ -687,6 +687,13 @@ static u64 btrfs_read_extent_reg(struct btrfs_path *path, struct btrfs_file_exte
     if (size > dlen - offset)
         size = dlen - offset;
 
+    /* Handle sparse extent */
+    if (extent->disk_bytenr == 0 && extent->disk_num_bytes == 0)
+    {
+        RtlZeroMemory(out, size);
+        return size;
+    }
+
     physical = logical_physical(extent->disk_bytenr);
     if (physical == INVALID_ADDRESS)
     {