Whamcloud - gitweb
libext2fs: find/alloc a range of empty blocks
[tools/e2fsprogs.git] / lib / ext2fs / swapfs.c
index e3628b3..ee7a455 100644 (file)
@@ -196,7 +196,9 @@ void ext2fs_swap_ext_attr(char *to, char *from, int bufsize, int has_header)
                to_entry   = (struct ext2_ext_attr_entry *)to_header;
        }
 
-       while ((char *)from_entry < from_end && *(__u32 *)from_entry) {
+       while ((char *)from_entry < from_end &&
+              (char *)EXT2_EXT_ATTR_NEXT(from_entry) <= from_end &&
+              *(__u32 *)from_entry) {
                ext2fs_swap_ext_attr_entry(to_entry, from_entry);
                from_entry = EXT2_EXT_ATTR_NEXT(from_entry);
                to_entry   = EXT2_EXT_ATTR_NEXT(to_entry);
@@ -241,7 +243,7 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct ext2_inode_large *t,
        t->i_flags = ext2fs_swab32(f->i_flags);
        if (!hostorder && (t->i_flags & EXT4_EXTENTS_FL))
                has_extents = 1;
-       if (!hostorder && (f->i_flags & EXT4_INLINE_DATA_FL))
+       if (!hostorder && (t->i_flags & EXT4_INLINE_DATA_FL))
                has_inline_data = 1;
        t->i_dir_acl = ext2fs_swab32(f->i_dir_acl);
        /*
@@ -363,7 +365,7 @@ void ext2fs_swap_mmp(struct mmp_struct *mmp)
 
 errcode_t ext2fs_dirent_swab_in(ext2_filsys fs, char *buf, int flags)
 {
-       return ext2fs_dirent_swab_in(fs, buf, fs->blocksize, flags);
+       return ext2fs_dirent_swab_in2(fs, buf, fs->blocksize, flags);
 }
 
 errcode_t ext2fs_dirent_swab_in2(ext2_filsys fs, char *buf,