1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
From: Theodore Ts'o <tytso@mit.edu>
Subject: libext2fs: fix integer overflow in ext2fs_punch() when releasing more than 2**31 blocks
Origin: upstream, https://github.com/tytso/e2fsprogs/commit/34b2a4a1f9794498ca403393003cc5840c240d42
Bug-Debian: http://bugs.debian.org/1106241
---
lib/ext2fs/punch.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/ext2fs/punch.c b/lib/ext2fs/punch.c
index e2543e1e7..80c699eb0 100644
--- a/lib/ext2fs/punch.c
+++ b/lib/ext2fs/punch.c
@@ -193,10 +193,10 @@ static void dbg_print_extent(char *desc, struct ext2fs_extent *extent)
static errcode_t punch_extent_blocks(ext2_filsys fs, ext2_ino_t ino,
struct ext2_inode *inode,
blk64_t lfree_start, blk64_t free_start,
- __u32 free_count, int *freed)
+ __u32 free_count, blk64_t *freed)
{
blk64_t pblk;
- int freed_now = 0;
+ __u32 freed_now = 0;
__u32 cluster_freed;
errcode_t retval = 0;
@@ -271,7 +271,7 @@ static errcode_t ext2fs_punch_extent(ext2_filsys fs, ext2_ino_t ino,
errcode_t retval;
blk64_t free_start, next, lfree_start;
__u32 free_count, newlen;
- int freed = 0;
+ blk64_t freed = 0;
int op;
retval = ext2fs_extent_open2(fs, ino, inode, &handle);
@@ -442,7 +442,7 @@ static errcode_t ext2fs_punch_extent(ext2_filsys fs, ext2_ino_t ino,
if (retval)
goto errout;
}
- dbg_printf("Freed %d blocks\n", freed);
+ dbg_printf("Freed %llu blocks\n", freed);
retval = ext2fs_iblk_sub_blocks(fs, inode, freed);
errout:
ext2fs_extent_free(handle);
--
2.47.2
|