[FREELDR] Handle Btrfs sparse extents (#1959)
[reactos.git] / 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)
     {