From: Theodore Ts'o Date: Wed, 30 Jan 2019 04:17:08 +0000 (-0500) Subject: Merge branch 'maint' into next X-Git-Tag: v1.45.0~14 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=9660ba3b6672174b4b6c3257f0b4ade877f1276f;p=tools%2Fe2fsprogs.git Merge branch 'maint' into next --- 9660ba3b6672174b4b6c3257f0b4ade877f1276f diff --cc lib/ext2fs/gen_bitmap.c index 181371c,674baa3..c94c21b --- a/lib/ext2fs/gen_bitmap.c +++ b/lib/ext2fs/gen_bitmap.c @@@ -583,13 -550,12 +583,14 @@@ errcode_t ext2fs_find_first_set_generic return ENOENT; } -int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap, +int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, blk_t block, int num) { + ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; + EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_BLOCK_BITMAP); - if ((block < bitmap->start) || (block+num-1 > bitmap->real_end)) { + if ((block < bitmap->start) || (block > bitmap->real_end) || + (block+num-1 > bitmap->real_end)) { ext2fs_warn_bitmap(EXT2_ET_BAD_BLOCK_TEST, block, bitmap->description); return 0; @@@ -598,13 -564,12 +599,14 @@@ bitmap, block, num); } -int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap, +int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap gen_bitmap, ext2_ino_t inode, int num) { + ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; + EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_INODE_BITMAP); - if ((inode < bitmap->start) || (inode+num-1 > bitmap->real_end)) { + if ((inode < bitmap->start) || (inode > bitmap->real_end) || + (inode+num-1 > bitmap->real_end)) { ext2fs_warn_bitmap(EXT2_ET_BAD_INODE_TEST, inode, bitmap->description); return 0; @@@ -613,13 -578,13 +615,14 @@@ bitmap, inode, num); } -void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap, +void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, blk_t block, int num) { + ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; int i; - if ((block < bitmap->start) || (block+num-1 > bitmap->end)) { + if ((block < bitmap->start) || (block > bitmap->end) || + (block+num-1 > bitmap->end)) { ext2fs_warn_bitmap(EXT2_ET_BAD_BLOCK_MARK, block, bitmap->description); return; @@@ -628,13 -593,13 +631,14 @@@ ext2fs_fast_set_bit(block + i - bitmap->start, bitmap->bitmap); } -void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap, - blk_t block, int num) +void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, + blk_t block, int num) { + ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; int i; - if ((block < bitmap->start) || (block+num-1 > bitmap->end)) { + if ((block < bitmap->start) || (block > bitmap->end) || + (block+num-1 > bitmap->end)) { ext2fs_warn_bitmap(EXT2_ET_BAD_BLOCK_UNMARK, block, bitmap->description); return; diff --cc lib/ext2fs/inode.c index 6d0938a,013c658..2a4be73 --- a/lib/ext2fs/inode.c +++ b/lib/ext2fs/inode.c @@@ -728,12 -740,12 +740,13 @@@ errcode_t ext2fs_get_next_inode(ext2_in /* * Functions to read and write a single inode. */ -errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino, - struct ext2_inode * inode, int bufsize) +errcode_t ext2fs_read_inode2(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode, int bufsize, + int flags) { blk64_t block_nr; - unsigned long group, block, offset; + dgrp_t group; + unsigned long block, offset; char *ptr; errcode_t retval; unsigned i; @@@ -850,16 -859,16 +867,17 @@@ errcode_t ext2fs_read_inode_full(ext2_f errcode_t ext2fs_read_inode(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode * inode) { - return ext2fs_read_inode_full(fs, ino, inode, - sizeof(struct ext2_inode)); + return ext2fs_read_inode2(fs, ino, inode, + sizeof(struct ext2_inode), 0); } -errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino, - struct ext2_inode * inode, int bufsize) +errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode, int bufsize, + int flags) { blk64_t block_nr; - unsigned long group, block, offset; + dgrp_t group; + unsigned long block, offset; errcode_t retval = 0; struct ext2_inode_large *w_inode; char *ptr;