]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Wed, 30 Jan 2019 04:17:08 +0000 (23:17 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 30 Jan 2019 04:17:08 +0000 (23:17 -0500)
1  2 
lib/ext2fs/gen_bitmap.c
lib/ext2fs/gen_bitmap64.c
lib/ext2fs/inode.c

index 181371c8c4250d351685336f8741677d35f29a5e,674baa3e20268f51ce09ea72e4389a7a7498a7ee..c94c21b663dc3aaef09cc0740f0b114d20220232
@@@ -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;
                                                      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;
                                                      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;
                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;
Simple merge
index 6d0938a4b10cdc1ab8d620e4db81d3417ed0d634,013c658ebd4b361623a6dba3f94b8e03cbc66f19..2a4be73938684b4a3f9832eb023f3dd21e69a133
@@@ -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;