From 76b7d1ba3fd664847a8ccb78130508a7e4fa5285 Mon Sep 17 00:00:00 2001 From: liuh Date: Fri, 10 Oct 2025 20:38:36 +0800 Subject: [PATCH] mke2fs: add range checks for -E desc_size --- ...2fs-add-range-checks-for-E-desc_size.patch | 58 +++++++++++++++++++ e2fsprogs.spec | 7 ++- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 0023-mke2fs-add-range-checks-for-E-desc_size.patch diff --git a/0023-mke2fs-add-range-checks-for-E-desc_size.patch b/0023-mke2fs-add-range-checks-for-E-desc_size.patch new file mode 100644 index 0000000..1a715fd --- /dev/null +++ b/0023-mke2fs-add-range-checks-for-E-desc_size.patch @@ -0,0 +1,58 @@ +From 326e8ab43503dd9f44338754c84cb03a725ecc49 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Mon, 26 May 2025 12:51:49 -0400 +Subject: [PATCH] mke2fs: add range checks for -E desc_size + +Prevent the user from specifying group descriptor that result in +invalid/corrupted file systems. + +Signed-off-by: Theodore Ts'o +--- + misc/mke2fs.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/misc/mke2fs.c b/misc/mke2fs.c +index aebf050..27bcd6e 100644 +--- a/misc/mke2fs.c ++++ b/misc/mke2fs.c +@@ -823,6 +823,7 @@ static int set_os(struct ext2_super_block *sb, char *os) + static void parse_extended_opts(struct ext2_super_block *param, + const char *opts) + { ++ unsigned long ulong; + char *buf, *token, *next, *p, *arg, *badopt = 0; + int len; + int r_usage = 0; +@@ -852,8 +853,6 @@ static void parse_extended_opts(struct ext2_super_block *param, + } + if (strcmp(token, "desc-size") == 0 || + strcmp(token, "desc_size") == 0) { +- int desc_size; +- + if (!ext2fs_has_feature_64bit(&fs_param)) { + fprintf(stderr, + _("%s requires '-O 64bit'\n"), token); +@@ -872,14 +871,17 @@ static void parse_extended_opts(struct ext2_super_block *param, + badopt = token; + continue; + } +- desc_size = strtoul(arg, &p, 0); +- if (*p || (desc_size & (desc_size - 1))) { ++ ulong = strtoul(arg, &p, 0); ++ if (*p || ++ (ulong < EXT2_MIN_DESC_SIZE_64BIT) || ++ (ulong > EXT2_MAX_DESC_SIZE) || ++ (ulong & (ulong - 1))) { + fprintf(stderr, + _("Invalid desc_size: '%s'\n"), arg); + r_usage++; + continue; + } +- param->s_desc_size = desc_size; ++ param->s_desc_size = ulong; + } else if (strcmp(token, "hash_seed") == 0) { + if (!arg) { + r_usage++; +-- +2.43.0 + diff --git a/e2fsprogs.spec b/e2fsprogs.spec index a1a71af..df057f3 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -1,6 +1,6 @@ Name: e2fsprogs Version: 1.47.0 -Release: 10 +Release: 11 Summary: Second extended file system management tools License: GPLv2+ and LGPLv2 and MIT URL: http://e2fsprogs.sourceforge.net/ @@ -29,6 +29,7 @@ Patch19: 0019-e2fsck-fix-acl-block-leak-when-process-orphan-list.patch Patch20: 0020-e2fsck-fix-handling-of-a-invalid-symlink-in-an-inlin.patch Patch21: 0021-e2fsprogs-modify-dumpe2fs-to-report-free-block-range.patch Patch22: 0022-resize2fs-use-Direct-I-O-when-reading-the-superblock.patch +Patch23: 0023-mke2fs-add-range-checks-for-E-desc_size.patch BuildRequires: gcc pkgconfig texinfo BuildRequires: fuse-devel libblkid-devel libuuid-devel @@ -169,6 +170,10 @@ exit 0 %{_mandir}/man8/* %changelog +* Fri Oct 10 2025 liuh - 1.47.0-11 +- sync patch from community + mke2fs: add range checks for -E desc_size + * Thu Jul 24 2025 zhangjian - 1.47.0-10 - backport bugfix from upstream -- Gitee