summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandan Rajendra <chandan@linux.vnet.ibm.com>2016-12-08 19:26:19 +0530
committerDavid Sterba <dsterba@suse.com>2016-12-14 15:06:36 +0100
commit8583b613095a46b000e5ee333d6bf58cad0c2248 (patch)
tree8f28f7111d93ff0f573f34a611b2a331cac21044
parent281e476b4dd89d1e1314d3123d566c83b4253a2d (diff)
btrfs-progs: convert: Prevent accounting blocks beyond end of device
When looping across data block bitmap, __ext2_add_one_block() may add blocks which do not exist on the underlying disk. This commit prevents this from happening by checking the block index against the maximum block count that was present in the ext4 filesystem instance that is being converted. Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com> Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--convert/main.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/convert/main.c b/convert/main.c
index 4b4cea42..1148a369 100644
--- a/convert/main.c
+++ b/convert/main.c
@@ -1525,6 +1525,9 @@ static int __ext2_add_one_block(ext2_filsys fs, char *bitmap,
offset /= EXT2FS_CLUSTER_RATIO(fs);
offset += group_nr * EXT2_CLUSTERS_PER_GROUP(fs->super);
for (i = 0; i < EXT2_CLUSTERS_PER_GROUP(fs->super); i++) {
+ if ((i + offset) >= ext2fs_blocks_count(fs->super))
+ break;
+
if (ext2fs_test_bit(i, bitmap)) {
u64 start;