forked from rpms/e2fsprogs
import e2fsprogs-1.45.6-1.el8
This commit is contained in:
parent
cf54d5c341
commit
cac5b8850a
@ -1 +1 @@
|
||||
4f2ac3a153c23d57968632e12c944eeb50613c51 SOURCES/e2fsprogs-1.45.4.tar.xz
|
||||
41dd6234aa5c148bd06571e6be013a807b3af7a0 SOURCES/e2fsprogs-1.45.6.tar.xz
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/e2fsprogs-1.45.4.tar.xz
|
||||
SOURCES/e2fsprogs-1.45.6.tar.xz
|
||||
|
@ -1,27 +0,0 @@
|
||||
From 007d212c3f6c4942185e53a41011d11585827033 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Sun, 15 Dec 2019 12:05:41 +0100
|
||||
Subject: [PATCH 1/2] mke2fs.conf: Disable fname_encoding feature
|
||||
|
||||
It's still rather new and we do not feel ready supporting it at the
|
||||
moment, so just disable it.
|
||||
|
||||
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
|
||||
---
|
||||
misc/mke2fs.conf.in | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
|
||||
index 00afd912..01e35cf8 100644
|
||||
--- a/misc/mke2fs.conf.in
|
||||
+++ b/misc/mke2fs.conf.in
|
||||
@@ -45,6 +45,3 @@
|
||||
blocksize = 4096
|
||||
inode_size = 128
|
||||
}
|
||||
-
|
||||
-[options]
|
||||
- fname_encoding = utf8
|
||||
--
|
||||
2.21.0
|
||||
|
@ -1,42 +0,0 @@
|
||||
From d7968909c6b503c3c96d36ae2a686b1b07308077 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Mon, 4 Nov 2019 21:22:54 -0500
|
||||
Subject: [PATCH 03/10] Fix UBSan when shifting (1LL << 63)
|
||||
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
lib/ext2fs/qcow2.h | 4 ++--
|
||||
misc/e2image.c | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/lib/ext2fs/qcow2.h b/lib/ext2fs/qcow2.h
|
||||
index 5576348a..b649c9cf 100644
|
||||
--- a/lib/ext2fs/qcow2.h
|
||||
+++ b/lib/ext2fs/qcow2.h
|
||||
@@ -30,8 +30,8 @@
|
||||
|
||||
#define QCOW_MAGIC (('Q' << 24) | ('F' << 16) | ('I' << 8) | 0xfb)
|
||||
#define QCOW_VERSION 2
|
||||
-#define QCOW_OFLAG_COPIED (1LL << 63)
|
||||
-#define QCOW_OFLAG_COMPRESSED (1LL << 62)
|
||||
+#define QCOW_OFLAG_COPIED (1ULL << 63)
|
||||
+#define QCOW_OFLAG_COMPRESSED (1ULL << 62)
|
||||
|
||||
#define QCOW_COMPRESSED 1
|
||||
#define QCOW_ENCRYPTED 2
|
||||
diff --git a/misc/e2image.c b/misc/e2image.c
|
||||
index 3c881fee..30f25432 100644
|
||||
--- a/misc/e2image.c
|
||||
+++ b/misc/e2image.c
|
||||
@@ -54,7 +54,7 @@ extern int optind;
|
||||
#include "support/plausible.h"
|
||||
#include "../version.h"
|
||||
|
||||
-#define QCOW_OFLAG_COPIED (1LL << 63)
|
||||
+#define QCOW_OFLAG_COPIED (1ULL << 63)
|
||||
#define NO_BLK ((blk64_t) -1)
|
||||
|
||||
/* Image types */
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,53 +0,0 @@
|
||||
From 8a51e038d172c3405466ddb60d712c2ac934b954 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Thu, 19 Dec 2019 19:37:34 -0500
|
||||
Subject: [PATCH 07/10] e2fsck: abort if there is a corrupted directory block
|
||||
when rehashing
|
||||
|
||||
In e2fsck pass 3a, when we are rehashing directories, at least in
|
||||
theory, all of the directories should have had corruptions with
|
||||
respect to directory entry structure fixed. However, it's possible
|
||||
(for example, if the user declined a fix) that we can reach this stage
|
||||
of processing with a corrupted directory entries.
|
||||
|
||||
So check for that case and don't try to process a corrupted directory
|
||||
block so we don't run into trouble in mutate_name() if there is a
|
||||
zero-length file name.
|
||||
|
||||
Addresses: TALOS-2019-0973
|
||||
Addresses: CVE-2019-5188
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
e2fsck/rehash.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
|
||||
index a5fc1be1..3dd1e941 100644
|
||||
--- a/e2fsck/rehash.c
|
||||
+++ b/e2fsck/rehash.c
|
||||
@@ -160,6 +160,10 @@ static int fill_dir_block(ext2_filsys fs,
|
||||
dir_offset += rec_len;
|
||||
if (dirent->inode == 0)
|
||||
continue;
|
||||
+ if ((name_len) == 0) {
|
||||
+ fd->err = EXT2_ET_DIR_CORRUPTED;
|
||||
+ return BLOCK_ABORT;
|
||||
+ }
|
||||
if (!fd->compress && (name_len == 1) &&
|
||||
(dirent->name[0] == '.'))
|
||||
continue;
|
||||
@@ -401,6 +405,11 @@ static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs,
|
||||
continue;
|
||||
}
|
||||
new_len = ext2fs_dirent_name_len(ent->dir);
|
||||
+ if (new_len == 0) {
|
||||
+ /* should never happen */
|
||||
+ ext2fs_unmark_valid(fs);
|
||||
+ continue;
|
||||
+ }
|
||||
memcpy(new_name, ent->dir->name, new_len);
|
||||
mutate_name(new_name, &new_len);
|
||||
for (j=0; j < fd->num_array; j++) {
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,43 +0,0 @@
|
||||
From a9daa3b6b888c2834de9869ba8037c22ae8c47e5 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Wed, 1 Jan 2020 21:50:27 -0500
|
||||
Subject: [PATCH 10/10] e2fsck: don't check for future superblock times if
|
||||
checkinterval == 0
|
||||
|
||||
We are no longer enabling periodic file system checks by default in
|
||||
mke2fs. The only reason why we force file system checks if the last
|
||||
mount time or last write time in the superblock is if this might
|
||||
bypass the periodic file systme checks. So if the checkinterval is
|
||||
zero, skip the last mount/write time checks since there's no reason to
|
||||
force a check just because the system clock is incorrect.
|
||||
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
e2fsck/super.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/e2fsck/super.c b/e2fsck/super.c
|
||||
index e5932be6..18affcf7 100644
|
||||
--- a/e2fsck/super.c
|
||||
+++ b/e2fsck/super.c
|
||||
@@ -1038,7 +1038,7 @@ void check_super_block(e2fsck_t ctx)
|
||||
* Check to see if the superblock last mount time or last
|
||||
* write time is in the future.
|
||||
*/
|
||||
- if (!broken_system_clock &&
|
||||
+ if (!broken_system_clock && fs->super->s_checkinterval &&
|
||||
!(ctx->flags & E2F_FLAG_TIME_INSANE) &&
|
||||
fs->super->s_mtime > (__u32) ctx->now) {
|
||||
pctx.num = fs->super->s_mtime;
|
||||
@@ -1050,7 +1050,7 @@ void check_super_block(e2fsck_t ctx)
|
||||
fs->flags |= EXT2_FLAG_DIRTY;
|
||||
}
|
||||
}
|
||||
- if (!broken_system_clock &&
|
||||
+ if (!broken_system_clock && fs->super->s_checkinterval &&
|
||||
!(ctx->flags & E2F_FLAG_TIME_INSANE) &&
|
||||
fs->super->s_wtime > (__u32) ctx->now) {
|
||||
pctx.num = fs->super->s_wtime;
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,46 +0,0 @@
|
||||
From c8bbee5fdc46876ec96be9c40831dcafadbcb983 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Thu, 19 Dec 2019 19:45:06 -0500
|
||||
Subject: [PATCH 08/10] e2fsck: don't try to rehash a deleted directory
|
||||
|
||||
If directory has been deleted in pass1[bcd] processing, then we
|
||||
shouldn't try to rehash the directory in pass 3a when we try to
|
||||
rehash/reoptimize directories.
|
||||
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
e2fsck/pass1b.c | 4 ++++
|
||||
e2fsck/rehash.c | 2 ++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/e2fsck/pass1b.c b/e2fsck/pass1b.c
|
||||
index 5693b9cf..bca701ca 100644
|
||||
--- a/e2fsck/pass1b.c
|
||||
+++ b/e2fsck/pass1b.c
|
||||
@@ -705,6 +705,10 @@ static void delete_file(e2fsck_t ctx, ext2_ino_t ino,
|
||||
fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx);
|
||||
if (ctx->inode_bad_map)
|
||||
ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino);
|
||||
+ if (ctx->inode_reg_map)
|
||||
+ ext2fs_unmark_inode_bitmap2(ctx->inode_reg_map, ino);
|
||||
+ ext2fs_unmark_inode_bitmap2(ctx->inode_dir_map, ino);
|
||||
+ ext2fs_unmark_inode_bitmap2(ctx->inode_used_map, ino);
|
||||
ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(dp->inode.i_mode));
|
||||
quota_data_sub(ctx->qctx, &dp->inode, ino,
|
||||
pb.dup_blocks * fs->blocksize);
|
||||
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
|
||||
index 3dd1e941..2c908be0 100644
|
||||
--- a/e2fsck/rehash.c
|
||||
+++ b/e2fsck/rehash.c
|
||||
@@ -1028,6 +1028,8 @@ void e2fsck_rehash_directories(e2fsck_t ctx)
|
||||
if (!ext2fs_u32_list_iterate(iter, &ino))
|
||||
break;
|
||||
}
|
||||
+ if (!ext2fs_test_inode_bitmap2(ctx->inode_dir_map, ino))
|
||||
+ continue;
|
||||
|
||||
pctx.dir = ino;
|
||||
if (first) {
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 4215866fa515f8f319ae602797984289248d8bfe Mon Sep 17 00:00:00 2001
|
||||
From: Wang Shilong <wshilong@ddn.com>
|
||||
Date: Tue, 26 Nov 2019 18:03:58 +0900
|
||||
Subject: [PATCH] e2fsck: fix to return ENOMEM in alloc_size_dir()
|
||||
|
||||
Two memory allocation return check is missed.
|
||||
|
||||
Signed-off-by: Wang Shilong <wshilong@ddn.com>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
e2fsck/rehash.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
|
||||
index e0764d0b..54bc6803 100644
|
||||
--- a/e2fsck/rehash.c
|
||||
+++ b/e2fsck/rehash.c
|
||||
@@ -276,7 +276,11 @@ static errcode_t alloc_size_dir(ext2_filsys fs, struct out_dir *outdir,
|
||||
outdir->hashes = new_mem;
|
||||
} else {
|
||||
outdir->buf = malloc(blocks * fs->blocksize);
|
||||
+ if (!outdir->buf)
|
||||
+ return ENOMEM;
|
||||
outdir->hashes = malloc(blocks * sizeof(ext2_dirhash_t));
|
||||
+ if (!outdir->hashes)
|
||||
+ return ENOMEM;
|
||||
outdir->num = 0;
|
||||
}
|
||||
outdir->max = blocks;
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,72 +0,0 @@
|
||||
From aa011a6deafa48b1015d402d7ec0bd40f9308109 Mon Sep 17 00:00:00 2001
|
||||
From: Wang Shilong <wshilong@ddn.com>
|
||||
Date: Mon, 30 Dec 2019 19:52:39 -0500
|
||||
Subject: [PATCH 09/10] e2fsck: fix use after free in calculate_tree()
|
||||
|
||||
The problem is alloc_blocks() will call get_next_block() which might
|
||||
reallocate outdir->buf, and memory address could be changed after
|
||||
this. To fix this, pointers that point into outdir->buf, such as
|
||||
int_limit and root need to be recaulated based on the new starting
|
||||
address of outdir->buf.
|
||||
|
||||
[ Changed to correctly recalculate int_limit, and to optimize how we
|
||||
reallocate outdir->buf. -TYT ]
|
||||
|
||||
Signed-off-by: Wang Shilong <wshilong@ddn.com>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
e2fsck/rehash.c | 17 ++++++++++++++++-
|
||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
|
||||
index 2c908be0..e0764d0b 100644
|
||||
--- a/e2fsck/rehash.c
|
||||
+++ b/e2fsck/rehash.c
|
||||
@@ -297,7 +297,11 @@ static errcode_t get_next_block(ext2_filsys fs, struct out_dir *outdir,
|
||||
errcode_t retval;
|
||||
|
||||
if (outdir->num >= outdir->max) {
|
||||
- retval = alloc_size_dir(fs, outdir, outdir->max + 50);
|
||||
+ int increment = outdir->max / 10;
|
||||
+
|
||||
+ if (increment < 50)
|
||||
+ increment = 50;
|
||||
+ retval = alloc_size_dir(fs, outdir, outdir->max + increment);
|
||||
if (retval)
|
||||
return retval;
|
||||
}
|
||||
@@ -641,6 +645,9 @@ static int alloc_blocks(ext2_filsys fs,
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
+ /* outdir->buf might be reallocated */
|
||||
+ *prev_ent = (struct ext2_dx_entry *) (outdir->buf + *prev_offset);
|
||||
+
|
||||
*next_ent = set_int_node(fs, block_start);
|
||||
*limit = (struct ext2_dx_countlimit *)(*next_ent);
|
||||
if (next_offset)
|
||||
@@ -730,6 +737,9 @@ static errcode_t calculate_tree(ext2_filsys fs,
|
||||
return retval;
|
||||
}
|
||||
if (c3 == 0) {
|
||||
+ int delta1 = (char *)int_limit - outdir->buf;
|
||||
+ int delta2 = (char *)root - outdir->buf;
|
||||
+
|
||||
retval = alloc_blocks(fs, &limit, &int_ent,
|
||||
&dx_ent, &int_offset,
|
||||
NULL, outdir, i, &c2,
|
||||
@@ -737,6 +747,11 @@ static errcode_t calculate_tree(ext2_filsys fs,
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
+ /* outdir->buf might be reallocated */
|
||||
+ int_limit = (struct ext2_dx_countlimit *)
|
||||
+ (outdir->buf + delta1);
|
||||
+ root = (struct ext2_dx_entry *)
|
||||
+ (outdir->buf + delta2);
|
||||
}
|
||||
dx_ent->block = ext2fs_cpu_to_le32(i);
|
||||
if (c3 != limit->limit)
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,39 +0,0 @@
|
||||
From bee65149cc025522ae0e2c37a0ce817641ebac28 Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Mon, 4 Nov 2019 18:43:49 -0500
|
||||
Subject: [PATCH 02/10] libext2fs: fix UBSan when updating an inline_data file
|
||||
|
||||
What memcpy does when the length is zero is not well-defined. So
|
||||
avoid it.
|
||||
|
||||
Bug: https://github.com/tytso/e2fsprogs/issues/25
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
lib/ext2fs/ext_attr.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c
|
||||
index 78a823a9..affc1a8f 100644
|
||||
--- a/lib/ext2fs/ext_attr.c
|
||||
+++ b/lib/ext2fs/ext_attr.c
|
||||
@@ -1550,14 +1550,15 @@ errcode_t ext2fs_xattr_set(struct ext2_xattr_handle *h,
|
||||
new_value, &value_len);
|
||||
if (ret)
|
||||
goto out;
|
||||
- } else
|
||||
+ } else if (value_len)
|
||||
memcpy(new_value, value, value_len);
|
||||
|
||||
/* Imitate kernel behavior by skipping update if value is the same. */
|
||||
for (x = h->attrs; x < h->attrs + h->count; x++) {
|
||||
if (!strcmp(x->name, name)) {
|
||||
if (!x->ea_ino && x->value_len == value_len &&
|
||||
- !memcmp(x->value, new_value, value_len)) {
|
||||
+ (!value_len ||
|
||||
+ !memcmp(x->value, new_value, value_len))) {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,41 +0,0 @@
|
||||
From b989de221a8399d42aede6da03297cad3330f12a Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Mon, 4 Nov 2019 16:43:41 -0500
|
||||
Subject: [PATCH 01/10] libext2fs: fix bug when reading or writing more than
|
||||
2GB in unix_io
|
||||
|
||||
If count * block_size exceeds 2GB, we will overflow a 32-bit signed
|
||||
integer value. This shouldn't happen in practice except for
|
||||
fuzz-corrupted file systems, but let's fix the code so it's correct.
|
||||
|
||||
Bug: https://github.com/tytso/e2fsprogs/issues/24
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
lib/ext2fs/unix_io.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
|
||||
index 74fc8a75..628e60c3 100644
|
||||
--- a/lib/ext2fs/unix_io.c
|
||||
+++ b/lib/ext2fs/unix_io.c
|
||||
@@ -166,7 +166,7 @@ static errcode_t raw_read_blk(io_channel channel,
|
||||
unsigned char *buf = bufv;
|
||||
ssize_t really_read = 0;
|
||||
|
||||
- size = (count < 0) ? -count : count * channel->block_size;
|
||||
+ size = (count < 0) ? -count : (ext2_loff_t) count * channel->block_size;
|
||||
data->io_stats.bytes_read += size;
|
||||
location = ((ext2_loff_t) block * channel->block_size) + data->offset;
|
||||
|
||||
@@ -275,7 +275,7 @@ static errcode_t raw_write_blk(io_channel channel,
|
||||
if (count < 0)
|
||||
size = -count;
|
||||
else
|
||||
- size = count * channel->block_size;
|
||||
+ size = (ext2_loff_t) count * channel->block_size;
|
||||
}
|
||||
data->io_stats.bytes_written += size;
|
||||
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,36 +0,0 @@
|
||||
From 764286ba7af40105ec9f27dba164fa53936c282f Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Fri, 8 Nov 2019 09:49:51 -0500
|
||||
Subject: [PATCH 04/10] libext2fs: properly free the bitmaps in read_bitmap()'s
|
||||
error/cleanup path
|
||||
|
||||
Use ext2fs_free_{block,inode}_bitmaps() instead of ext2fs_free_mem()
|
||||
to avoid some memory leaks if there is an error while calling
|
||||
read_bitmaps().
|
||||
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
lib/ext2fs/rw_bitmaps.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c
|
||||
index f1c4188b..e092cab0 100644
|
||||
--- a/lib/ext2fs/rw_bitmaps.c
|
||||
+++ b/lib/ext2fs/rw_bitmaps.c
|
||||
@@ -396,11 +396,11 @@ success_cleanup:
|
||||
|
||||
cleanup:
|
||||
if (do_block) {
|
||||
- ext2fs_free_mem(&fs->block_map);
|
||||
+ ext2fs_free_block_bitmap(fs->block_map);
|
||||
fs->block_map = 0;
|
||||
}
|
||||
if (do_inode) {
|
||||
- ext2fs_free_mem(&fs->inode_map);
|
||||
+ ext2fs_free_inode_bitmap(fs->inode_map);
|
||||
fs->inode_map = 0;
|
||||
}
|
||||
if (inode_bitmap)
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,51 +0,0 @@
|
||||
From 21e41eeef968941c1ee0126852fdb705967730ea Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Fri, 8 Nov 2019 11:58:10 -0500
|
||||
Subject: [PATCH 05/10] libext2fs: verify the block numbers for the allocation
|
||||
bitmaps are valid
|
||||
|
||||
This avoids a potential UBsan failure when we multiply an insanely
|
||||
high block number with the block size and we get a multiplication
|
||||
overflow.
|
||||
|
||||
Google-Bug-Id: 128130353
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
lib/ext2fs/rw_bitmaps.c | 14 ++++++++------
|
||||
1 file changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c
|
||||
index e092cab0..d80c9eb8 100644
|
||||
--- a/lib/ext2fs/rw_bitmaps.c
|
||||
+++ b/lib/ext2fs/rw_bitmaps.c
|
||||
@@ -306,9 +306,10 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
|
||||
for (i = 0; i < fs->group_desc_count; i++) {
|
||||
if (block_bitmap) {
|
||||
blk = ext2fs_block_bitmap_loc(fs, i);
|
||||
- if (csum_flag &&
|
||||
- ext2fs_bg_flags_test(fs, i, EXT2_BG_BLOCK_UNINIT) &&
|
||||
- ext2fs_group_desc_csum_verify(fs, i))
|
||||
+ if ((csum_flag &&
|
||||
+ ext2fs_bg_flags_test(fs, i, EXT2_BG_BLOCK_UNINIT) &&
|
||||
+ ext2fs_group_desc_csum_verify(fs, i)) ||
|
||||
+ (blk >= ext2fs_blocks_count(fs->super)))
|
||||
blk = 0;
|
||||
if (blk) {
|
||||
retval = io_channel_read_blk64(fs->io, blk,
|
||||
@@ -340,9 +341,10 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
|
||||
}
|
||||
if (inode_bitmap) {
|
||||
blk = ext2fs_inode_bitmap_loc(fs, i);
|
||||
- if (csum_flag &&
|
||||
- ext2fs_bg_flags_test(fs, i, EXT2_BG_INODE_UNINIT) &&
|
||||
- ext2fs_group_desc_csum_verify(fs, i))
|
||||
+ if ((csum_flag &&
|
||||
+ ext2fs_bg_flags_test(fs, i, EXT2_BG_INODE_UNINIT) &&
|
||||
+ ext2fs_group_desc_csum_verify(fs, i)) ||
|
||||
+ (blk >= ext2fs_blocks_count(fs->super)))
|
||||
blk = 0;
|
||||
if (blk) {
|
||||
retval = io_channel_read_blk64(fs->io, blk,
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,56 +0,0 @@
|
||||
From d758a667f27b38d9ecc0715062307a8bce741aee Mon Sep 17 00:00:00 2001
|
||||
From: "Darrick J. Wong" <darrick.wong@oracle.com>
|
||||
Date: Wed, 20 Nov 2019 11:32:55 -0800
|
||||
Subject: [PATCH 06/10] tune2fs: prohibit toggling uninit_bg on live
|
||||
filesystems
|
||||
|
||||
An internal customer followed an erroneous AskUbuntu article[1] to try to
|
||||
change the UUID of a live ext4 filesystem. The article claims that you
|
||||
can work around tune2fs' "cannot change UUID on live fs" error by
|
||||
disabling uninit_bg, changing the UUID, and re-enabling the feature.
|
||||
|
||||
This led to metadata corruption because tune2fs' journal descriptor
|
||||
rewrite races with regular filesystem writes. Therefore, prevent
|
||||
administrators from turning on or off uninit_bg on a mounted fs.
|
||||
|
||||
[1] https://askubuntu.com/questions/132079/how-do-i-change-uuid-of-a-disk-to-whatever-i-want/195839#459097
|
||||
|
||||
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
---
|
||||
misc/tune2fs.c | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
|
||||
index 7d2d38d7..301cf388 100644
|
||||
--- a/misc/tune2fs.c
|
||||
+++ b/misc/tune2fs.c
|
||||
@@ -1308,6 +1308,12 @@ mmp_error:
|
||||
|
||||
if (FEATURE_ON(E2P_FEATURE_RO_INCOMPAT,
|
||||
EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) {
|
||||
+ if (mount_flags & EXT2_MF_MOUNTED) {
|
||||
+ fputs(_("Cannot enable uninit_bg on a mounted "
|
||||
+ "filesystem!\n"), stderr);
|
||||
+ exit(1);
|
||||
+ }
|
||||
+
|
||||
/* Do not enable uninit_bg when metadata_csum enabled */
|
||||
if (ext2fs_has_feature_metadata_csum(fs->super))
|
||||
ext2fs_clear_feature_gdt_csum(fs->super);
|
||||
@@ -1317,6 +1323,12 @@ mmp_error:
|
||||
|
||||
if (FEATURE_OFF(E2P_FEATURE_RO_INCOMPAT,
|
||||
EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) {
|
||||
+ if (mount_flags & EXT2_MF_MOUNTED) {
|
||||
+ fputs(_("Cannot disable uninit_bg on a mounted "
|
||||
+ "filesystem!\n"), stderr);
|
||||
+ exit(1);
|
||||
+ }
|
||||
+
|
||||
err = disable_uninit_bg(fs,
|
||||
EXT4_FEATURE_RO_COMPAT_GDT_CSUM);
|
||||
if (err)
|
||||
--
|
||||
2.21.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From bb566b0efe6179a1aa2dac6e3c05a12f59eac8a3 Mon Sep 17 00:00:00 2001
|
||||
From 06116f6d053e398d13634df911bcb105d0fb2416 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Sun, 15 Dec 2019 12:42:28 +0100
|
||||
Subject: [PATCH 2/2] Makefile.in: Disable e2scrub
|
||||
Subject: [PATCH 1/7] Makefile.in: Disable e2scrub
|
||||
|
||||
e2scrub system is still new and we're not ready to support it yet, so
|
||||
just disbale it and not even build it.
|
||||
@ -34,5 +34,5 @@ index b951c017..34e2048d 100644
|
||||
SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests
|
||||
|
||||
--
|
||||
2.21.0
|
||||
2.21.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 6499a3eef9583d893a442372e1567d74ce5a045b Mon Sep 17 00:00:00 2001
|
||||
From f2bb71bdbedf33f4fae4e1402ec23fe58eece1a7 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Sun, 15 Dec 2019 14:39:46 +0100
|
||||
Subject: [PATCH] Revert "fuse2fs: install fuse2fs in /usr/bin instead of
|
||||
Subject: [PATCH 2/7] Revert "fuse2fs: install fuse2fs in /usr/bin instead of
|
||||
/usr/sbin"
|
||||
|
||||
This reverts commit b71150355dca5409cf8e82a7e715e459a795bbf8.
|
||||
@ -19,7 +19,7 @@ index 2ed4c3c0..cd37a70e 100644
|
||||
+/usr/sbin/fuse2fs
|
||||
/usr/share/man/man1/fuse2fs.1
|
||||
diff --git a/misc/Makefile.in b/misc/Makefile.in
|
||||
index f2554446..22c98489 100644
|
||||
index 9f2a8939..216fc771 100644
|
||||
--- a/misc/Makefile.in
|
||||
+++ b/misc/Makefile.in
|
||||
@@ -35,7 +35,7 @@ INSTALL = @INSTALL@
|
||||
@ -41,5 +41,5 @@ index f2554446..22c98489 100644
|
||||
UMANPAGES+= @FUSE_CMT@ fuse2fs.1
|
||||
|
||||
--
|
||||
2.21.0
|
||||
2.21.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From cff7039936d361a0ab1d76ef0c12b681f3be9172 Mon Sep 17 00:00:00 2001
|
||||
From cdbe6f07c929b0c9a80b7fbeb61b3a9f66015085 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Tue, 14 Jan 2020 09:49:31 +0100
|
||||
Subject: [PATCH 2/2] Revert "libext2fs: hide struct ext2fs_hashmap as an
|
||||
Subject: [PATCH 6/7] Revert "libext2fs: hide struct ext2fs_hashmap as an
|
||||
internal implementation detail"
|
||||
|
||||
This reverts commit ef54444e6d1da4b464c11e749c9643ed945a770b
|
||||
@ -82,5 +82,5 @@ index dcfa7455..656d3d90 100644
|
||||
|
||||
struct ext2fs_hashmap *ext2fs_hashmap_create(
|
||||
--
|
||||
2.21.1
|
||||
2.21.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 48101b992aa733fe97bfefe2e43a29fca9e65748 Mon Sep 17 00:00:00 2001
|
||||
From 1c25e64066e861f273b785b06ef3bc7636552eab Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Tue, 14 Jan 2020 09:49:19 +0100
|
||||
Subject: [PATCH 1/2] Revert "libext2fs: revamp bitmap types to fix LTO
|
||||
Subject: [PATCH 5/7] Revert "libext2fs: revamp bitmap types to fix LTO
|
||||
warnings"
|
||||
|
||||
This reverts commit 83d9ffccf3ee6ad4e165eeb6912acf1f6149be28 because it
|
||||
@ -19,10 +19,10 @@ Signed-off-by: Lukas Czerner <lczerner@redhat.com>
|
||||
7 files changed, 173 insertions(+), 256 deletions(-)
|
||||
|
||||
diff --git a/lib/ext2fs/bitmaps.c b/lib/ext2fs/bitmaps.c
|
||||
index e25db2c6..84021917 100644
|
||||
index 834a3962..e0b1f7cd 100644
|
||||
--- a/lib/ext2fs/bitmaps.c
|
||||
+++ b/lib/ext2fs/bitmaps.c
|
||||
@@ -125,7 +125,6 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,
|
||||
@@ -126,7 +126,6 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,
|
||||
{
|
||||
__u64 start, end, real_end;
|
||||
ext2fs_generic_bitmap bmap;
|
||||
@ -30,7 +30,7 @@ index e25db2c6..84021917 100644
|
||||
errcode_t retval;
|
||||
|
||||
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
|
||||
@@ -148,15 +147,14 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,
|
||||
@@ -149,15 +148,14 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,
|
||||
end, real_end, descr, &bmap);
|
||||
if (retval)
|
||||
return retval;
|
||||
@ -459,7 +459,7 @@ index de334548..d8c7a3c3 100644
|
||||
};
|
||||
|
||||
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
|
||||
index 59fd9742..c50a67cf 100644
|
||||
index 4b7c836a..ba83534c 100644
|
||||
--- a/lib/ext2fs/ext2fs.h
|
||||
+++ b/lib/ext2fs/ext2fs.h
|
||||
@@ -111,14 +111,9 @@ typedef struct struct_ext2_filsys *ext2_filsys;
|
||||
@ -481,7 +481,7 @@ index 59fd9742..c50a67cf 100644
|
||||
#define EXT2_FIRST_INODE(s) EXT2_FIRST_INO(s)
|
||||
|
||||
diff --git a/lib/ext2fs/gen_bitmap.c b/lib/ext2fs/gen_bitmap.c
|
||||
index c94c21b6..674baa3e 100644
|
||||
index 1536d4b3..b545ed7f 100644
|
||||
--- a/lib/ext2fs/gen_bitmap.c
|
||||
+++ b/lib/ext2fs/gen_bitmap.c
|
||||
@@ -28,7 +28,7 @@
|
||||
@ -1417,5 +1417,5 @@ index 6e4d8b71..47ba2baf 100644
|
||||
|
||||
return ENOENT;
|
||||
--
|
||||
2.21.1
|
||||
2.21.3
|
||||
|
@ -1,7 +1,8 @@
|
||||
From 687ba50f6dde0b753870fcd62be5ef30c75bb38f Mon Sep 17 00:00:00 2001
|
||||
From 9039cf5c5da439f6c65435c0a2b9ae16989940e1 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Tue, 14 Jan 2020 20:56:41 +0100
|
||||
Subject: [PATCH] ext2fs: fix ABI change in the struct_ext2_filsys structure
|
||||
Subject: [PATCH 7/7] ext2fs: fix ABI change in the struct_ext2_filsys
|
||||
structure
|
||||
|
||||
Upstream increased size of the struct_ext2_filsys structure by adding
|
||||
new encoding member. However this represents ABI breakage within a major
|
||||
@ -14,7 +15,7 @@ Signed-off-by: Lukas Czerner <lczerner@redhat.com>
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
|
||||
index c50a67cf..5bb9133a 100644
|
||||
index ba83534c..32c75171 100644
|
||||
--- a/lib/ext2fs/ext2fs.h
|
||||
+++ b/lib/ext2fs/ext2fs.h
|
||||
@@ -250,10 +250,17 @@ struct struct_ext2_filsys {
|
||||
@ -46,5 +47,5 @@ index c50a67cf..5bb9133a 100644
|
||||
|
||||
#if EXT2_FLAT_INCLUDES
|
||||
--
|
||||
2.21.1
|
||||
2.21.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From e571c0f64fe02f09472a1011b3f129f94b3ec4ed Mon Sep 17 00:00:00 2001
|
||||
From b46e1de31f31b9564445a094e1c9cb592062868c Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Wed, 18 Dec 2019 11:03:37 +0100
|
||||
Subject: [PATCH] man: Add note about RHEL8 supported features and mount
|
||||
Subject: [PATCH 4/7] man: Add note about RHEL8 supported features and mount
|
||||
options
|
||||
|
||||
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
|
||||
@ -70,7 +70,7 @@ index 1db61a5f..39b1412e 100644
|
||||
A file system formatted for ext2, ext3, or ext4 can have some
|
||||
collection of the following file system feature flags enabled. Some of
|
||||
diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
|
||||
index 5bcee25e..8297bc5b 100644
|
||||
index e6bfc6d6..6106342b 100644
|
||||
--- a/misc/mke2fs.8.in
|
||||
+++ b/misc/mke2fs.8.in
|
||||
@@ -204,6 +204,54 @@ overridden by the options listed below, are controlled by the
|
||||
@ -129,5 +129,5 @@ index 5bcee25e..8297bc5b 100644
|
||||
.TP
|
||||
.BI \-b " block-size"
|
||||
--
|
||||
2.21.1
|
||||
2.21.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 541e51dcf19433838aba7de11e6f3f124e6ef4da Mon Sep 17 00:00:00 2001
|
||||
From 42e4b2148a42ce35d5bc86586341a887928ec4dc Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Czerner <lczerner@redhat.com>
|
||||
Date: Tue, 17 Dec 2019 11:24:31 +0100
|
||||
Subject: [PATCH] mke2fs.conf: Introduce rhel6 and rhel7 fs_type
|
||||
Subject: [PATCH 3/7] mke2fs.conf: Introduce rhel6 and rhel7 fs_type
|
||||
|
||||
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
|
||||
---
|
||||
@ -30,5 +30,5 @@ index 01e35cf8..a533b210 100644
|
||||
blocksize = 1024
|
||||
inode_size = 128
|
||||
--
|
||||
2.21.1
|
||||
2.21.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
Summary: Utilities for managing ext2, ext3, and ext4 file systems
|
||||
Name: e2fsprogs
|
||||
Version: 1.45.4
|
||||
Release: 3%{?dist}
|
||||
Version: 1.45.6
|
||||
Release: 1%{?dist}
|
||||
|
||||
# License tags based on COPYING file distinctions for various components
|
||||
License: GPLv2
|
||||
@ -27,25 +27,13 @@ BuildRequires: libuuid-devel
|
||||
BuildRequires: gettext
|
||||
BuildRequires: multilib-rpm-config
|
||||
|
||||
Patch0: e2fsprogs-1.45.4-Makefile.in-Disable-e2scrub.patch
|
||||
Patch1: e2fsprogs-1.45.4-mke2fs.conf-Disable-fname_encoding-feature.patch
|
||||
Patch2: e2fsprogs-1.45.4-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch
|
||||
Patch3: e2fsprogs-1.45.4-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch
|
||||
Patch4: e2fsprogs-1.45.4-man-Add-note-about-RHEL8-supported-features-and-moun.patch
|
||||
Patch5: e2fsprogs-1.45.5-libext2fs-fix-bug-when-reading-or-writing-more-than-.patch
|
||||
Patch6: e2fsprogs-1.45.5-libext2fs-fix-UBSan-when-updating-an-inline_data-fil.patch
|
||||
Patch7: e2fsprogs-1.45.5-Fix-UBSan-when-shifting-1LL-63.patch
|
||||
Patch8: e2fsprogs-1.45.5-libext2fs-properly-free-the-bitmaps-in-read_bitmap-s.patch
|
||||
Patch9: e2fsprogs-1.45.5-libext2fs-verify-the-block-numbers-for-the-allocatio.patch
|
||||
Patch10: e2fsprogs-1.45.5-tune2fs-prohibit-toggling-uninit_bg-on-live-filesyst.patch
|
||||
Patch11: e2fsprogs-1.45.5-e2fsck-abort-if-there-is-a-corrupted-directory-block.patch
|
||||
Patch12: e2fsprogs-1.45.5-e2fsck-don-t-try-to-rehash-a-deleted-directory.patch
|
||||
Patch13: e2fsprogs-1.45.5-e2fsck-fix-use-after-free-in-calculate_tree.patch
|
||||
Patch14: e2fsprogs-1.45.5-e2fsck-don-t-check-for-future-superblock-times-if-ch.patch
|
||||
Patch15: e2fsprogs-1.45.5-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch
|
||||
Patch16: e2fsprogs-1.45.5-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch
|
||||
Patch17: e2fsprogs-1.45.5-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch
|
||||
Patch18: e2fsprogs-1.45.5-e2fsck-fix-to-return-ENOMEM-in-alloc_size_dir.patch
|
||||
Patch0: e2fsprogs-1.45.6-Makefile.in-Disable-e2scrub.patch
|
||||
Patch1: e2fsprogs-1.45.6-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch
|
||||
Patch2: e2fsprogs-1.45.6-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch
|
||||
Patch3: e2fsprogs-1.45.6-man-Add-note-about-RHEL8-supported-features-and-moun.patch
|
||||
Patch4: e2fsprogs-1.45.6-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch
|
||||
Patch5: e2fsprogs-1.45.6-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch
|
||||
Patch6: e2fsprogs-1.45.6-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch
|
||||
|
||||
%description
|
||||
The e2fsprogs package contains a number of utilities for creating,
|
||||
@ -171,18 +159,6 @@ It was originally inspired by the Multics SubSystem library.
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
|
||||
%build
|
||||
%configure CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \
|
||||
@ -345,6 +321,9 @@ exit 0
|
||||
%{_libdir}/pkgconfig/ss.pc
|
||||
|
||||
%changelog
|
||||
* Wed Jun 03 2020 Lukas Czerner <lczerner@redhat.com> 1.45.6-5
|
||||
- Rebase to the upstream release 1.45.6 (#1843548)
|
||||
|
||||
* Tue Jan 14 2020 Lukas Czerner <lczerner@redhat.com> 1.45.4-3
|
||||
- Fix clang warning introduced in previous release (#1783777)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user