From dd51fedd16aa86ae32831de44d69ef698bcab8f1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 21 Jan 2024 11:54:19 +0000 Subject: [PATCH 01/13] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- parted.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parted.spec b/parted.spec index 798602e..a3b392f 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -113,6 +113,9 @@ make check %changelog +* Sun Jan 21 2024 Fedora Release Engineering - 3.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Thu Jul 20 2023 Fedora Release Engineering - 3.6-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 33a7d91cd031a9bdd577ef0d0085976884bc7c58 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 25 Jan 2024 12:04:58 +0000 Subject: [PATCH 02/13] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- parted.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parted.spec b/parted.spec index a3b392f..0712f44 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 3%{?dist} +Release: 4%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -113,6 +113,9 @@ make check %changelog +* Thu Jan 25 2024 Fedora Release Engineering - 3.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Sun Jan 21 2024 Fedora Release Engineering - 3.6-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 92a16b9fb1fe7fb7e7f10219fdb94abeb995dfce Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Tue, 16 Jul 2024 17:33:24 -0700 Subject: [PATCH 03/13] - doc: Document IEC unit behavior in the manpage (bcl) - parted: Print the Fixing... message to stderr (bcl) --- ...-Print-the-Fixing.-message-to-stderr.patch | 28 ++++++++++++++ ...ent-IEC-unit-behavior-in-the-manpage.patch | 37 +++++++++++++++++++ parted.spec | 9 ++++- 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 0001-parted-Print-the-Fixing.-message-to-stderr.patch create mode 100644 0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch diff --git a/0001-parted-Print-the-Fixing.-message-to-stderr.patch b/0001-parted-Print-the-Fixing.-message-to-stderr.patch new file mode 100644 index 0000000..bfc90de --- /dev/null +++ b/0001-parted-Print-the-Fixing.-message-to-stderr.patch @@ -0,0 +1,28 @@ +From fc16e90a9fd64e2db12a815417b538b193fe48db Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Wed, 10 Jul 2024 15:41:16 -0700 +Subject: [PATCH 1/2] parted: Print the Fixing... message to stderr + +Otherwise it messes up stdout of things like --json + +Thanks to Mikael Q for reporting this. +--- + parted/ui.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/parted/ui.c b/parted/ui.c +index 33a1808..d6d1da4 100644 +--- a/parted/ui.c ++++ b/parted/ui.c +@@ -645,7 +645,7 @@ exception_handler (PedException* ex) + /* script-mode and fix? */ + int fix_is_an_option = (ex->options & PED_EXCEPTION_FIX); + if (opt_script_mode && opt_fix_mode && fix_is_an_option) { +- printf ("Fixing, due to --fix\n"); ++ fprintf (stderr, "Fixing, due to --fix\n"); + return PED_EXCEPTION_FIX; + } + +-- +2.45.2 + diff --git a/0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch b/0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch new file mode 100644 index 0000000..09f116f --- /dev/null +++ b/0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch @@ -0,0 +1,37 @@ +From e34c1477cfa446f1b44287b10425a9e69602b519 Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Fri, 12 Jul 2024 16:24:58 -0700 +Subject: [PATCH 2/2] doc: Document IEC unit behavior in the manpage + +Previously this has only been documented in the info page. +--- + doc/C/parted.8 | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/doc/C/parted.8 b/doc/C/parted.8 +index 3069c33..171269c 100644 +--- a/doc/C/parted.8 ++++ b/doc/C/parted.8 +@@ -151,6 +151,19 @@ Toggle the state of the disk \fIflag\fP. + .B version + Display version information and a copyright message. + .RE ++.SH UNITS ++\fBparted\fP will compute sensible ranges for the locations you specify when using ++units like "GB", "MB", etc. Use the sector unit "s" or IEC binary units like ++"GiB", "MiB", to specify exact locations. ++ ++When you specify start or end values using IEC binary units like "MiB", ++"GiB", "TiB", etc., \fBparted\fP treats those values as exact, and equivalent to ++the same number specified in bytes (i.e., with the "B" suffix), in that it ++provides no helpful range of sloppiness. Contrast that with a partition ++start request of "4GB", which may actually resolve to some sector up to 500MB ++before or after that point. Thus, when creating a partition in an exact location ++you should use units of bytes ("B"), sectors ("s"), or IEC binary units like ++"MiB", "GiB", but not "MB", "GB", etc. + .SH REPORTING BUGS + Report bugs to + .SH SEE ALSO +-- +2.45.2 + diff --git a/parted.spec b/parted.spec index 0712f44..e68edf4 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 4%{?dist} +Release: 5%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -10,6 +10,9 @@ Source1: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig Source2: pubkey.phillip.susi Source3: pubkey.brian.lane +Patch0001: 0001-parted-Print-the-Fixing.-message-to-stderr.patch +Patch0002: 0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch + BuildRequires: gcc BuildRequires: e2fsprogs-devel BuildRequires: readline-devel @@ -113,6 +116,10 @@ make check %changelog +* Tue Jul 16 2024 Brian C. Lane - 3.6-5 +- doc: Document IEC unit behavior in the manpage (bcl) +- parted: Print the Fixing... message to stderr (bcl) + * Thu Jan 25 2024 Fedora Release Engineering - 3.6-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 7a70ad0b824134c8e50a6500f7e1bf5418dc6613 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 18 Jul 2024 21:31:19 +0000 Subject: [PATCH 04/13] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- parted.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parted.spec b/parted.spec index e68edf4..eeca1ef 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 5%{?dist} +Release: 6%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -116,6 +116,9 @@ make check %changelog +* Thu Jul 18 2024 Fedora Release Engineering - 3.6-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Tue Jul 16 2024 Brian C. Lane - 3.6-5 - doc: Document IEC unit behavior in the manpage (bcl) - parted: Print the Fixing... message to stderr (bcl) From c43802428646dd0aadee34b5ff16f083932e4520 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Wed, 31 Jul 2024 08:54:08 -0700 Subject: [PATCH 05/13] tests: Move to tmt tests and switch to a functional test Instead of repeating the build unit testing, this tests the installed parted with a simple disk image partitioning scheme to verify basic functionality. --- .fmf/version | 1 + plans/test-parted.fmf | 8 ++++++++ tests/provision.fmf | 5 ----- tests/scripts/run_tests.sh | 30 ++++++++++++++++++++++++++++++ tests/simple/run_tests.sh | 29 ----------------------------- tests/tests.yml | 14 -------------- 6 files changed, 39 insertions(+), 48 deletions(-) create mode 100644 .fmf/version create mode 100644 plans/test-parted.fmf delete mode 100644 tests/provision.fmf create mode 100755 tests/scripts/run_tests.sh delete mode 100755 tests/simple/run_tests.sh delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/plans/test-parted.fmf b/plans/test-parted.fmf new file mode 100644 index 0000000..2b22c58 --- /dev/null +++ b/plans/test-parted.fmf @@ -0,0 +1,8 @@ +summary: Run a basic parted test +prepare: + how: install + package: + - parted + - jq +execute: + script: ./tests/scripts/run_tests.sh diff --git a/tests/provision.fmf b/tests/provision.fmf deleted file mode 100644 index dd69f34..0000000 --- a/tests/provision.fmf +++ /dev/null @@ -1,5 +0,0 @@ ---- - -standard-inventory-qcow2: - qemu: - m: 4G diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh new file mode 100755 index 0000000..0161a84 --- /dev/null +++ b/tests/scripts/run_tests.sh @@ -0,0 +1,30 @@ +#!/usr/bin/bash +set -eux + +DISK=/var/tmp/parted-disk.img + +# Make a temporary disk image to use for tests +fallocate -l 100MiB $DISK + +# Make a disklabel and a couple of partitions +parted -s $DISK mklabel gpt +parted -s $DISK mkpart vfat 1MiB 10MiB +parted -s $DISK mkpart ext4 10MiB 50MiB +parted -s $DISK mkpart ext4 50MiB 75MiB +parted -s $DISK set 1 boot +parted -s $DISK set 3 linux-home + +# Check p1 for ESP UUID c12a7328-f81f-11d2-ba4b-00a0c93ec93b +P1_TYPE=$(parted -s $DISK --json u MiB p | jq -r '.disk.partitions[0]."type-uuid"') +[ "$P1_TYPE" == "c12a7328-f81f-11d2-ba4b-00a0c93ec93b" ] || exit 1 + +# Check p2 for linux data type 0fc63daf-8483-4772-8e79-3d69d8477de4 +P2_TYPE=$(parted -s $DISK --json u MiB p | jq -r '.disk.partitions[1]."type-uuid"') +[ "$P2_TYPE" == "0fc63daf-8483-4772-8e79-3d69d8477de4" ] || exit 1 + +# Check p3 for linux home type 933ac7e1-2eb4-4f13-b844-0e14e2aef915 +P3_TYPE=$(parted -s $DISK --json u MiB p | jq -r '.disk.partitions[2]."type-uuid"') +[ "$P3_TYPE" == "933ac7e1-2eb4-4f13-b844-0e14e2aef915" ] || exit 1 + +echo "PASS" +exit 0 diff --git a/tests/simple/run_tests.sh b/tests/simple/run_tests.sh deleted file mode 100755 index 9d40419..0000000 --- a/tests/simple/run_tests.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -set -eux - -: ${1?"Usage: $0 TESTSDIR"} - -TESTSDIR="$1" -SOURCEDIR="${TESTSDIR}/source/" -PACKAGE=parted - -cd "${TESTSDIR}" -if [ ! -e ${PACKAGE}.spec ]; then - echo "Missing ${PACKAGE}.spec" - pwd - ls - exit 1 -fi - -# This runs from the ./tests/ directory -# Install the dependencies from the spec which MUST be copied over by tests.yml -dnf -y build-dep ${PACKAGE}.spec - -# Flattened sources from standard-role-sources -cd "${SOURCEDIR}" || exit - -# Rebuild the package in place, also runs the %check -# skip %prep, it was already run on the source before it was copied over -rpmbuild --noprep --nodeps -bb --build-in-place "${TESTSDIR}/${PACKAGE}.spec" -RET=$? -exit ${RET} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 5fde476..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- hosts: localhost - tags: - - classic - roles: - - role: standard-test-source - required_packages: - - dnf - - rpm-build - - git - - role: standard-test-basic - tests: - - simple: - run: "./run_tests.sh {{ tenv_workdir }}" From b8c84c998296df51e16ab3d7df3079e452626cf0 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Fri, 23 Aug 2024 08:17:29 -0700 Subject: [PATCH 06/13] - tests: Move to tmt tests and switch to a functional test (bcl) --- parted.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parted.spec b/parted.spec index eeca1ef..7448a3f 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 6%{?dist} +Release: 7%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -116,6 +116,9 @@ make check %changelog +* Fri Aug 23 2024 Brian C. Lane - 3.6-7 +- tests: Move to tmt tests and switch to a functional test (bcl) + * Thu Jul 18 2024 Fedora Release Engineering - 3.6-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From ff0683d294963f0582bd91dd43f0832e3d1fc15d Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Thu, 17 Oct 2024 16:57:17 -0700 Subject: [PATCH 07/13] - libparted: Fail early when detecting nilfs2 (oldium.pro) --- ...ted-Fail-early-when-detecting-nilfs2.patch | 55 +++++++++++++++++++ parted.spec | 4 ++ 2 files changed, 59 insertions(+) create mode 100644 0003-libparted-Fail-early-when-detecting-nilfs2.patch diff --git a/0003-libparted-Fail-early-when-detecting-nilfs2.patch b/0003-libparted-Fail-early-when-detecting-nilfs2.patch new file mode 100644 index 0000000..b9675bb --- /dev/null +++ b/0003-libparted-Fail-early-when-detecting-nilfs2.patch @@ -0,0 +1,55 @@ +From 8623f65e1fd064a679f75e3e075dff86f30282a7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Old=C5=99ich=20Jedli=C4=8Dka?= +Date: Sat, 6 Apr 2024 19:21:11 +0200 +Subject: [PATCH] libparted: Fail early when detecting nilfs2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When the disk is encrypted with TCG Opal HW encryption (supported by +cryptsetup 2.7.0+), the partition initially contains locked area, which +shows reading errors in kernel logs and may lead to configuring the disk +to work with lower reading speed. When the disk area is unlocked with +password, the reading succeeds. The beginning of the protected partition is +not locked and contains LUKS header, this is always readable. + +To work around the errors when reading from the locked area, try first +detecting nilfs2 at the beginning (may be an unprotected LUKS header area) +and only check the second superblock that is at the end of the area (and +possibly locked) if the first one is valid (meaning the partition is not +LUKS-protected). + +This is a change in behavior, but is consistent with the nilfs2 code, which +considers both superblocks mandatory, see [1]. + +[1] https://github.com/nilfs-dev/nilfs-utils/blob/master/lib/sb.c#L135-L158 + +Signed-off-by: Oldřich Jedlička +Signed-off-by: Brian C. Lane +--- + libparted/fs/nilfs2/nilfs2.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/libparted/fs/nilfs2/nilfs2.c b/libparted/fs/nilfs2/nilfs2.c +index 6204542..40f8567 100644 +--- a/libparted/fs/nilfs2/nilfs2.c ++++ b/libparted/fs/nilfs2/nilfs2.c +@@ -118,11 +118,12 @@ nilfs2_probe (PedGeometry* geom) + + if (ped_geometry_read(geom, buf, 0, sectors)) + sb = (struct nilfs2_super_block*)(buf + 1024); ++ if (!sb || !is_valid_nilfs_sb(sb)) ++ return NULL; ++ + if (ped_geometry_read(geom, buff2, sb2off, sectors2)) + sb2 = (struct nilfs2_super_block*)buff2; +- +- if ((!sb || !is_valid_nilfs_sb(sb)) && +- (!sb2 || !is_valid_nilfs_sb(sb2))) ++ if (!sb2 || !is_valid_nilfs_sb(sb2)) + return NULL; + + /* reserve 4k bytes for secondary superblock */ +-- +2.47.0 + diff --git a/parted.spec b/parted.spec index 7448a3f..570a0ba 100644 --- a/parted.spec +++ b/parted.spec @@ -12,6 +12,7 @@ Source3: pubkey.brian.lane Patch0001: 0001-parted-Print-the-Fixing.-message-to-stderr.patch Patch0002: 0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch +Patch0003: 0003-libparted-Fail-early-when-detecting-nilfs2.patch BuildRequires: gcc BuildRequires: e2fsprogs-devel @@ -116,6 +117,9 @@ make check %changelog +* Thu Oct 17 2024 Brian C. Lane - 3.6-7 +- libparted: Fail early when detecting nilfs2 (oldium.pro) + * Fri Aug 23 2024 Brian C. Lane - 3.6-7 - tests: Move to tmt tests and switch to a functional test (bcl) From b58c412aedf8334506cf58ab66cc6c58630414ea Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Thu, 17 Oct 2024 16:59:43 -0700 Subject: [PATCH 08/13] Properly bump the release number --- parted.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parted.spec b/parted.spec index 570a0ba..991599e 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 7%{?dist} +Release: 8%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -117,7 +117,7 @@ make check %changelog -* Thu Oct 17 2024 Brian C. Lane - 3.6-7 +* Thu Oct 17 2024 Brian C. Lane - 3.6-8 - libparted: Fail early when detecting nilfs2 (oldium.pro) * Fri Aug 23 2024 Brian C. Lane - 3.6-7 From b1522a97110c5f2fd7a47f18d5d21b5dfe746f43 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Wed, 20 Nov 2024 09:35:26 -0800 Subject: [PATCH 09/13] - parted: Fix do_version declaration (rudi) --- ...CH-parted-fix-do_version-declaration.patch | 41 +++++++++++++++++++ parted.spec | 6 ++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 0004-bug-74444-PATCH-parted-fix-do_version-declaration.patch diff --git a/0004-bug-74444-PATCH-parted-fix-do_version-declaration.patch b/0004-bug-74444-PATCH-parted-fix-do_version-declaration.patch new file mode 100644 index 0000000..187e4c4 --- /dev/null +++ b/0004-bug-74444-PATCH-parted-fix-do_version-declaration.patch @@ -0,0 +1,41 @@ +From 16343bda6ce0d41edf43f8dac368db3bbb63d271 Mon Sep 17 00:00:00 2001 +From: Rudi Heitbaum +Date: Wed, 20 Nov 2024 12:22:22 +0000 +Subject: [PATCH] bug#74444: [PATCH] parted: fix do_version declaration + +With gcc 15-20241117 compile fails with the below error, update the +do_version declaration to match the header in command.h + +../../parted/parted.c: In function '_init_commands': +../../parted/parted.c:2469:9: error: passing argument 2 of 'command_create' from incompatible pointer type [-Wincompatible-pointer-types] + 2469 | do_version, + | ^~~~~~~~~~ + | | + | int (*)(void) +In file included from ../../parted/parted.c:28: +../../parted/command.h:35:39: note: expected 'int (*)(PedDevice **, PedDisk **)' {aka 'int (*)(struct _PedDevice **, struct _PedDisk **)'} but argument is of type 'int (*)(void)' + 35 | int (*method) (PedDevice** dev, PedDisk** diskp), + | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Rudi Heitbaum +Signed-off-by: Brian C. Lane +--- + parted/parted.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/parted/parted.c b/parted/parted.c +index 3abb52f..fc2aeba 100644 +--- a/parted/parted.c ++++ b/parted/parted.c +@@ -2172,7 +2172,7 @@ do_unit (PedDevice** dev, PedDisk** diskp) + } + + static int +-do_version () ++do_version (PedDevice** dev, PedDisk** diskp) + { + printf ("\n%s\n%s", + prog_name, +-- +2.47.0 + diff --git a/parted.spec b/parted.spec index 991599e..fc4362f 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 8%{?dist} +Release: 9%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -13,6 +13,7 @@ Source3: pubkey.brian.lane Patch0001: 0001-parted-Print-the-Fixing.-message-to-stderr.patch Patch0002: 0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch Patch0003: 0003-libparted-Fail-early-when-detecting-nilfs2.patch +Patch0004: 0004-bug-74444-PATCH-parted-fix-do_version-declaration.patch BuildRequires: gcc BuildRequires: e2fsprogs-devel @@ -117,6 +118,9 @@ make check %changelog +* Wed Nov 20 2024 Brian C. Lane - 3.6-9 +- parted: Fix do_version declaration (rudi) + * Thu Oct 17 2024 Brian C. Lane - 3.6-8 - libparted: Fail early when detecting nilfs2 (oldium.pro) From c89e7cb3be6ef3b491388f3fdc00e3170708eb8f Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Wed, 15 Jan 2025 10:19:36 -0800 Subject: [PATCH 10/13] - tests: Add test for dvh with a bad checksum (bcl) - libparted: Fix dvh disklabel unhandled exception (bcl) - tests: Add test for SUN disklabel handling (bcl) - libparted: Fix sun disklabel unhandled exception (bcl) --- ...ix-sun-disklabel-unhandled-exception.patch | 31 +++++ ...-Add-test-for-SUN-disklabel-handling.patch | 116 ++++++++++++++++++ ...ix-dvh-disklabel-unhandled-exception.patch | 29 +++++ ...Add-test-for-dvh-with-a-bad-checksum.patch | 57 +++++++++ parted.spec | 12 +- 5 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 0005-libparted-Fix-sun-disklabel-unhandled-exception.patch create mode 100644 0006-tests-Add-test-for-SUN-disklabel-handling.patch create mode 100644 0007-libparted-Fix-dvh-disklabel-unhandled-exception.patch create mode 100644 0008-tests-Add-test-for-dvh-with-a-bad-checksum.patch diff --git a/0005-libparted-Fix-sun-disklabel-unhandled-exception.patch b/0005-libparted-Fix-sun-disklabel-unhandled-exception.patch new file mode 100644 index 0000000..e4c5d9f --- /dev/null +++ b/0005-libparted-Fix-sun-disklabel-unhandled-exception.patch @@ -0,0 +1,31 @@ +From 95b877cfa36c1571487c2a67a3902f1f5c4dc747 Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Tue, 7 Jan 2025 16:50:21 -0800 +Subject: [PATCH 5/8] libparted: Fix sun disklabel unhandled exception + +The CHS warning should only continue if ignored, not if unhandled. + +Script mode, or exception handlers can return PED_EXCEPTION_UNHANDLED +which should act the same as a cancel. Previously it would only exit if +cancel was selected, allowing it to continue to use the bad CHS and +crash later. +--- + libparted/labels/sun.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libparted/labels/sun.c b/libparted/labels/sun.c +index 5ed2886..853576b 100644 +--- a/libparted/labels/sun.c ++++ b/libparted/labels/sun.c +@@ -284,7 +284,7 @@ _check_geometry_sanity (PedDisk* disk, SunRawLabel* label) + PED_BE16_TO_CPU(label->pcylcount), + PED_BE16_TO_CPU(label->ntrks), + PED_BE16_TO_CPU(label->nsect)) +- == PED_EXCEPTION_CANCEL) ++ != PED_EXCEPTION_IGNORE) + return 0; + #endif + dev->bios_geom.sectors = PED_BE16_TO_CPU(label->nsect); +-- +2.47.1 + diff --git a/0006-tests-Add-test-for-SUN-disklabel-handling.patch b/0006-tests-Add-test-for-SUN-disklabel-handling.patch new file mode 100644 index 0000000..735e60d --- /dev/null +++ b/0006-tests-Add-test-for-SUN-disklabel-handling.patch @@ -0,0 +1,116 @@ +From bdb92f73112177c091a764836a9ceaa59f7e9b15 Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Wed, 8 Jan 2025 11:59:40 -0800 +Subject: [PATCH 6/8] tests: Add test for SUN disklabel handling + +When fixed the output from script mode should be an unknown disklabel, +not sun. +--- + tests/Makefile.am | 3 ++- + tests/sun-badlabel | 42 +++++++++++++++++++++++++++++++++++++ + tests/t4002-sun-badlabel.sh | 23 ++++++++++++++++++++ + 3 files changed, 67 insertions(+), 1 deletion(-) + create mode 100755 tests/sun-badlabel + create mode 100644 tests/t4002-sun-badlabel.sh + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index fa27b44..00f4a9d 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -67,6 +67,7 @@ TESTS = \ + t3400-whole-disk-FAT-partition.sh \ + t4000-sun-raid-type.sh \ + t4001-sun-vtoc.sh \ ++ t4002-sun-badlabel.sh \ + t4100-msdos-partition-limits.sh \ + t4100-dvh-partition-limits.sh \ + t4100-msdos-starting-sector.sh \ +@@ -103,7 +104,7 @@ TESTS = \ + EXTRA_DIST = \ + $(TESTS) t-local.sh t-lvm.sh \ + init.cfg init.sh t-lib-helpers.sh gpt-header-munge \ +- gpt-header-move msdos-overlap gpt-attrs ++ gpt-header-move msdos-overlap gpt-attrs sun-badlabel + + check_PROGRAMS = print-align print-flags print-max dup-clobber duplicate \ + fs-resize +diff --git a/tests/sun-badlabel b/tests/sun-badlabel +new file mode 100755 +index 0000000..6a28e86 +--- /dev/null ++++ b/tests/sun-badlabel +@@ -0,0 +1,42 @@ ++#!/usr/bin/python3 ++# Mangle the CHS values stored in a SUN disklabel ++# This sets CHS to 1 track, 2 sectors and updates the checksum ++# This triggers a bug in the SUN disklabel code when the CHS ++# error is UNHANDLED (in script mode or with a custom exception ++# handler) and it continues using a bad label which will coredump ++# when .duplicate() is called on it. ++ ++import array ++from struct import unpack_from, pack_into ++import sys ++ ++file = open(sys.argv[1],'rb+') ++header = file.read(512) ++ ++# Make sure it looks like a SUN disklabel first ++magic = unpack_from(">H", header, 0x1FC)[0] ++if magic != 0xDABE: ++ raise RuntimeError("Not a SUN disklabel. magic = 0x%04X" % magic) ++csum = unpack_from(">H", header, 0x1FE)[0] ++ntrks = unpack_from(">H", header, 0x1B4)[0] ++nsect = unpack_from(">H", header, 0x1B6)[0] ++ ++header = array.array('B', header) ++# cylinders at 0x1B0 ++# modify ntrks at offset 0x1B4 ++pack_into('>H', header, 0x1B4, 1) ++# modify nsect at offset 0x1B6 ++pack_into('>H', header, 0x1B6, 2) ++ ++## Undo old values ++csum ^= ntrks ++csum ^= nsect ++ ++## Add new ++csum ^= 1 ++csum ^= 2 ++pack_into('>H', header, 0x1FE, csum) ++ ++file.seek(0) ++file.write(header) ++file.close() +diff --git a/tests/t4002-sun-badlabel.sh b/tests/t4002-sun-badlabel.sh +new file mode 100644 +index 0000000..177c0e4 +--- /dev/null ++++ b/tests/t4002-sun-badlabel.sh +@@ -0,0 +1,23 @@ ++#!/bin/sh ++# Test exception handling on a bad SUN disklabel ++ ++. "${srcdir=.}/init.sh"; path_prepend_ ../parted $srcdir ++ss=$sector_size_ ++ ++n_sectors=2000 # number of sectors ++dev=sun-disk-file ++# create an empty file as a test disk ++dd if=/dev/zero of=$dev bs=$ss count=$n_sectors 2> /dev/null || fail=1 ++ ++# label the test disk as a sun disk ++parted -s $dev mklabel sun > out 2>&1 || fail=1 ++compare /dev/null out || fail=1 ++ ++# Mangle the disklabel to have incorrect CHS values, but a valid checksum ++sun-badlabel $dev || fail=1 ++ ++# Check the output (this should return 1, but depend on checking the output for the test) ++parted -m -s $dev p > out 2>&1 ++grep unknown out || { cat out; fail=1; } ++ ++Exit $fail +-- +2.47.1 + diff --git a/0007-libparted-Fix-dvh-disklabel-unhandled-exception.patch b/0007-libparted-Fix-dvh-disklabel-unhandled-exception.patch new file mode 100644 index 0000000..59dacde --- /dev/null +++ b/0007-libparted-Fix-dvh-disklabel-unhandled-exception.patch @@ -0,0 +1,29 @@ +From 1480769f2a7071c5a251b6c69658808199e8b05b Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Wed, 8 Jan 2025 13:35:04 -0800 +Subject: [PATCH 7/8] libparted: Fix dvh disklabel unhandled exception + +When an exception is using PED_EXCEPTION_IGNORE_CANCEL it should check +for !PED_EXCEPTION_IGNORE so that an unhandled exception is treated the +same as cancel. Otherwise it could lead to using the disklabel with +incorrect values. +--- + libparted/labels/dvh.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libparted/labels/dvh.c b/libparted/labels/dvh.c +index 0f9124d..7d7dae3 100644 +--- a/libparted/labels/dvh.c ++++ b/libparted/labels/dvh.c +@@ -308,7 +308,7 @@ dvh_read (PedDisk* disk) + PED_EXCEPTION_IGNORE_CANCEL, + _("Checksum is wrong, indicating the partition " + "table is corrupt.")) +- == PED_EXCEPTION_CANCEL) ++ != PED_EXCEPTION_IGNORE) + return 0; + } + +-- +2.47.1 + diff --git a/0008-tests-Add-test-for-dvh-with-a-bad-checksum.patch b/0008-tests-Add-test-for-dvh-with-a-bad-checksum.patch new file mode 100644 index 0000000..b1f9451 --- /dev/null +++ b/0008-tests-Add-test-for-dvh-with-a-bad-checksum.patch @@ -0,0 +1,57 @@ +From 82b582996ce691eb635bed124603207515b92efe Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Wed, 8 Jan 2025 14:01:39 -0800 +Subject: [PATCH 8/8] tests: Add test for dvh with a bad checksum + +When using script mode it should return an unknown partition type, not +dvh, because the exception is unhandled. +--- + tests/Makefile.am | 1 + + tests/t4101-dvh-badlabel.sh | 23 +++++++++++++++++++++++ + 2 files changed, 24 insertions(+) + create mode 100644 tests/t4101-dvh-badlabel.sh + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 00f4a9d..5eeab08 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -71,6 +71,7 @@ TESTS = \ + t4100-msdos-partition-limits.sh \ + t4100-dvh-partition-limits.sh \ + t4100-msdos-starting-sector.sh \ ++ t4101-dvh-badlabel.sh \ + t4200-partprobe.sh \ + t4300-nilfs2-tiny.sh \ + t4301-nilfs2-badsb2.sh \ +diff --git a/tests/t4101-dvh-badlabel.sh b/tests/t4101-dvh-badlabel.sh +new file mode 100644 +index 0000000..075c044 +--- /dev/null ++++ b/tests/t4101-dvh-badlabel.sh +@@ -0,0 +1,23 @@ ++#!/bin/sh ++# Test exception handling on a bad DVH disklabel ++ ++. "${srcdir=.}/init.sh"; path_prepend_ ../parted $srcdir ++ss=$sector_size_ ++ ++n_sectors=2000 # number of sectors ++dev=sun-disk-file ++# create an empty file as a test disk ++dd if=/dev/zero of=$dev bs=$ss count=$n_sectors 2> /dev/null || fail=1 ++ ++# label the test disk as a dvh disk ++parted -s $dev mklabel dvh > out 2>&1 || fail=1 ++compare /dev/null out || fail=1 ++ ++# Mangle the disklabel to have incorrect checksum ++dd if=/dev/zero of=$dev conv=notrunc bs=4 count=1 seek=1 ++ ++# Check the output (this should return 1, but depend on checking the output for the test) ++parted -m -s $dev p > out 2>&1 ++grep unknown out || { cat out; fail=1; } ++ ++Exit $fail +-- +2.47.1 + diff --git a/parted.spec b/parted.spec index fc4362f..a07d44e 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 9%{?dist} +Release: 10%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -14,6 +14,10 @@ Patch0001: 0001-parted-Print-the-Fixing.-message-to-stderr.patch Patch0002: 0002-doc-Document-IEC-unit-behavior-in-the-manpage.patch Patch0003: 0003-libparted-Fail-early-when-detecting-nilfs2.patch Patch0004: 0004-bug-74444-PATCH-parted-fix-do_version-declaration.patch +Patch0005: 0005-libparted-Fix-sun-disklabel-unhandled-exception.patch +Patch0006: 0006-tests-Add-test-for-SUN-disklabel-handling.patch +Patch0007: 0007-libparted-Fix-dvh-disklabel-unhandled-exception.patch +Patch0008: 0008-tests-Add-test-for-dvh-with-a-bad-checksum.patch BuildRequires: gcc BuildRequires: e2fsprogs-devel @@ -118,6 +122,12 @@ make check %changelog +* Wed Jan 15 2025 Brian C. Lane - 3.6-10 +- tests: Add test for dvh with a bad checksum (bcl) +- libparted: Fix dvh disklabel unhandled exception (bcl) +- tests: Add test for SUN disklabel handling (bcl) +- libparted: Fix sun disklabel unhandled exception (bcl) + * Wed Nov 20 2024 Brian C. Lane - 3.6-9 - parted: Fix do_version declaration (rudi) From 2e579d4323385b4491069adbb56e851bbc67606e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 17 Jan 2025 22:26:33 +0000 Subject: [PATCH 11/13] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- parted.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parted.spec b/parted.spec index a07d44e..c0203d1 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 10%{?dist} +Release: 11%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -122,6 +122,9 @@ make check %changelog +* Fri Jan 17 2025 Fedora Release Engineering - 3.6-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Wed Jan 15 2025 Brian C. Lane - 3.6-10 - tests: Add test for dvh with a bad checksum (bcl) - libparted: Fix dvh disklabel unhandled exception (bcl) From a13c518ae560f199c9c6412fa923896ec7b2a96a Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Fri, 30 May 2025 10:49:27 -0700 Subject: [PATCH 12/13] - doc: Fix some groff/mandoc linting complaints (bcl) - nilfs2: Fixed possible sigsegv in case of corrupted superblock (abutenko) - libparted: Do not detect ext4 without journal as ext2 (pascal) - tests: probing ext4 without journal should still indicate ext4 (bcl) --- ...t4-without-journal-should-still-indi.patch | 52 +++++++++++ ...-detect-ext4-without-journal-as-ext2.patch | 61 +++++++++++++ ...sible-sigsegv-in-case-of-corrupted-s.patch | 61 +++++++++++++ ...some-groff-mandoc-linting-complaints.patch | 90 +++++++++++++++++++ parted.spec | 12 ++- 5 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 0009-tests-probing-ext4-without-journal-should-still-indi.patch create mode 100644 0010-libparted-Do-not-detect-ext4-without-journal-as-ext2.patch create mode 100644 0011-nilfs2-Fixed-possible-sigsegv-in-case-of-corrupted-s.patch create mode 100644 0012-doc-Fix-some-groff-mandoc-linting-complaints.patch diff --git a/0009-tests-probing-ext4-without-journal-should-still-indi.patch b/0009-tests-probing-ext4-without-journal-should-still-indi.patch new file mode 100644 index 0000000..1fa6a1c --- /dev/null +++ b/0009-tests-probing-ext4-without-journal-should-still-indi.patch @@ -0,0 +1,52 @@ +From 43c2b908396e8b7baa475e009f3f4dbf9b9beac7 Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Wed, 28 May 2025 11:24:21 -0700 +Subject: [PATCH 09/12] tests: probing ext4 without journal should still + indicate ext4 + +t1700 tests a fix for the ext filesystem probe code, it was previously +returning ext2 when the filesystem is really ext4 without a journal. + +t3200 is updated to reflect the correct filesystem type -- it creates a +fs too small for a journal so it used to identify it as ext2 but now +correctly identifies it as ext4. +--- + tests/t1700-probe-fs.sh | 10 ++++++++++ + tests/t3200-resize-partition.sh | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/tests/t1700-probe-fs.sh b/tests/t1700-probe-fs.sh +index 7557f92..2bf2810 100755 +--- a/tests/t1700-probe-fs.sh ++++ b/tests/t1700-probe-fs.sh +@@ -70,4 +70,14 @@ for feature in uninit_bg flex_bg; do + rm $dev + done + ++# ext4 without a journal should still indicate ext4 ++# create an ext3 file system ++dd if=/dev/null of=$dev bs=1024 seek=8192 >/dev/null || skip_ "dd failed" ++mkfs.ext4 -O ^has_journal -F $dev >/dev/null || skip_ "mkfs.ext4 failed" ++ ++# probe the file system, which should still be ext4 ++parted -m -s $dev u s print >out 2>&1 || fail=1 ++grep '^1:.*:ext4::;$' out || fail=1 ++rm $dev ++ + Exit $fail +diff --git a/tests/t3200-resize-partition.sh b/tests/t3200-resize-partition.sh +index 846fbc3..c9decab 100755 +--- a/tests/t3200-resize-partition.sh ++++ b/tests/t3200-resize-partition.sh +@@ -111,7 +111,7 @@ compare exp out || fail=1 + parted -m -s $dev u s p > out 2>&1 || fail=1 + + sed -n 3p out > k && mv k out || fail=1 +-printf "1:$default_start:$new_end:3073s:ext2::$ms;\n" > exp || fail=1 ++printf "1:$default_start:$new_end:3073s:ext4::$ms;\n" > exp || fail=1 + compare exp out || fail=1 + + umount "${dev}1" || fail=1 +-- +2.49.0 + diff --git a/0010-libparted-Do-not-detect-ext4-without-journal-as-ext2.patch b/0010-libparted-Do-not-detect-ext4-without-journal-as-ext2.patch new file mode 100644 index 0000000..2739563 --- /dev/null +++ b/0010-libparted-Do-not-detect-ext4-without-journal-as-ext2.patch @@ -0,0 +1,61 @@ +From e61584ddeb952ff04823936dabd1a6a241f04f38 Mon Sep 17 00:00:00 2001 +From: Pascal Hambourg +Date: Thu, 17 Apr 2025 18:42:33 +0200 +Subject: [PATCH 10/12] libparted: Do not detect ext4 without journal as ext2 + +ext4 may have other incompatible features than journal and cannot be +mounted as ext2 by linux, so detect it as ext4 even without journal +if it has other incompatible features. + +Signed-off-by: Brian C. Lane +--- + libparted/fs/ext2/interface.c | 33 +++++++++++++++------------------ + 1 file changed, 15 insertions(+), 18 deletions(-) + +diff --git a/libparted/fs/ext2/interface.c b/libparted/fs/ext2/interface.c +index 7e0b197..5f64ab3 100644 +--- a/libparted/fs/ext2/interface.c ++++ b/libparted/fs/ext2/interface.c +@@ -52,24 +52,21 @@ _ext2_generic_probe (PedGeometry* geom, int expect_ext_ver) + int is_ext3 = 0; + int is_ext4 = 0; + +- is_ext3 = (EXT2_SUPER_FEATURE_COMPAT (*sb) +- & EXT3_FEATURE_COMPAT_HAS_JOURNAL) != 0; +- if (is_ext3) { +- is_ext4 = ((EXT2_SUPER_FEATURE_RO_COMPAT (*sb) +- & EXT4_FEATURE_RO_COMPAT_HUGE_FILE) +- || (EXT2_SUPER_FEATURE_RO_COMPAT (*sb) +- & EXT4_FEATURE_RO_COMPAT_GDT_CSUM) +- || (EXT2_SUPER_FEATURE_RO_COMPAT (*sb) +- & EXT4_FEATURE_RO_COMPAT_DIR_NLINK) +- || (EXT2_SUPER_FEATURE_INCOMPAT (*sb) +- & EXT4_FEATURE_INCOMPAT_EXTENTS) +- || (EXT2_SUPER_FEATURE_INCOMPAT (*sb) +- & EXT4_FEATURE_INCOMPAT_64BIT) +- || (EXT2_SUPER_FEATURE_INCOMPAT (*sb) +- & EXT4_FEATURE_INCOMPAT_FLEX_BG)); +- if (is_ext4) +- is_ext3 = 0; +- } ++ is_ext4 = ((EXT2_SUPER_FEATURE_RO_COMPAT (*sb) ++ & EXT4_FEATURE_RO_COMPAT_HUGE_FILE) ++ || (EXT2_SUPER_FEATURE_RO_COMPAT (*sb) ++ & EXT4_FEATURE_RO_COMPAT_GDT_CSUM) ++ || (EXT2_SUPER_FEATURE_RO_COMPAT (*sb) ++ & EXT4_FEATURE_RO_COMPAT_DIR_NLINK) ++ || (EXT2_SUPER_FEATURE_INCOMPAT (*sb) ++ & EXT4_FEATURE_INCOMPAT_EXTENTS) ++ || (EXT2_SUPER_FEATURE_INCOMPAT (*sb) ++ & EXT4_FEATURE_INCOMPAT_64BIT) ++ || (EXT2_SUPER_FEATURE_INCOMPAT (*sb) ++ & EXT4_FEATURE_INCOMPAT_FLEX_BG)); ++ if (!is_ext4) ++ is_ext3 = (EXT2_SUPER_FEATURE_COMPAT (*sb) ++ & EXT3_FEATURE_COMPAT_HAS_JOURNAL) != 0; + if (expect_ext_ver == 2 && (is_ext3 || is_ext4)) + return NULL; + if (expect_ext_ver == 3 && !is_ext3) +-- +2.49.0 + diff --git a/0011-nilfs2-Fixed-possible-sigsegv-in-case-of-corrupted-s.patch b/0011-nilfs2-Fixed-possible-sigsegv-in-case-of-corrupted-s.patch new file mode 100644 index 0000000..de1b0c5 --- /dev/null +++ b/0011-nilfs2-Fixed-possible-sigsegv-in-case-of-corrupted-s.patch @@ -0,0 +1,61 @@ +From 2fad7d827d27e75298f1d17b5fa6567ddfc4c338 Mon Sep 17 00:00:00 2001 +From: Anton Butenko +Date: Fri, 28 Feb 2025 16:09:18 +0100 +Subject: [PATCH 11/12] nilfs2: Fixed possible sigsegv in case of corrupted + superblock + +bytes value comes from the superblock and it must be at least as long as +s_sum which is a 32 bit value. So sumoff + 4 is the correct lower limit +for it, not sumoff - 4. + +Signed-off-by: Brian C. Lane +--- + libparted/fs/nilfs2/nilfs2.c | 2 +- + tests/t4301-nilfs2-badsb2.sh | 10 ++++++++-- + 2 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/libparted/fs/nilfs2/nilfs2.c b/libparted/fs/nilfs2/nilfs2.c +index 40f8567..74186f1 100644 +--- a/libparted/fs/nilfs2/nilfs2.c ++++ b/libparted/fs/nilfs2/nilfs2.c +@@ -88,7 +88,7 @@ is_valid_nilfs_sb(struct nilfs2_super_block *sb) + return 0; + + bytes = PED_LE16_TO_CPU(sb->s_bytes); +- if (bytes > 1024 || bytes < sumoff - 4) ++ if (bytes > 1024 || bytes < sumoff + 4) + return 0; + + crc = __efi_crc32(sb, sumoff, PED_LE32_TO_CPU(sb->s_crc_seed)); +diff --git a/tests/t4301-nilfs2-badsb2.sh b/tests/t4301-nilfs2-badsb2.sh +index 2a1205b..45b6644 100755 +--- a/tests/t4301-nilfs2-badsb2.sh ++++ b/tests/t4301-nilfs2-badsb2.sh +@@ -27,16 +27,22 @@ end=$(($len * 512 / $ss)) + parted -s $dev mklabel msdos mkpart primary 1s ${end}s || framework_failure_ + + # Write a secondary superblock with the nilfs magic number and a nilfs +-# superblock length (s_bytes) field of only 10 bytes. ++# superblock length (s_bytes) field of only 13 bytes. + # struct nilfs2_super_block starts with these four fields... + # uint32_t s_rev_level; + # uint16_t s_minor_rev_level; + # uint16_t s_magic; + # uint16_t s_bytes; + sb2_offset=$(( 24 / ($ss / 512) + 1)) +-perl -e "print pack 'LSSS.', 0, 0, 0x3434, 10, $ss" | ++perl -e "print pack 'LSSS.', 0, 0, 0x3434, 13, $ss" | + dd of=$dev bs=$ss seek=$sb2_offset count=1 conv=notrunc + ++# Write primary nilfs magic number and a nilfs ++# superblock length (s_bytes) field of only 13 bytes. ++sb_offset=3 ++perl -e "print pack 'LSSS.', 0, 0, 0x3434, 13, $ss" | ++ dd of=$dev bs=$ss seek=$sb_offset count=1 conv=notrunc ++ + # This used to give parted a sigsegv. + parted -s $dev print || fail=1 + +-- +2.49.0 + diff --git a/0012-doc-Fix-some-groff-mandoc-linting-complaints.patch b/0012-doc-Fix-some-groff-mandoc-linting-complaints.patch new file mode 100644 index 0000000..a846f6f --- /dev/null +++ b/0012-doc-Fix-some-groff-mandoc-linting-complaints.patch @@ -0,0 +1,90 @@ +From a2164c99b4d7d37334f9ca5ece55d8af95d002b7 Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +Date: Wed, 28 May 2025 13:09:32 -0700 +Subject: [PATCH 12/12] doc: Fix some groff/mandoc linting complaints + +--- + doc/C/parted.8 | 27 ++++++++++++--------------- + 1 file changed, 12 insertions(+), 15 deletions(-) + +diff --git a/doc/C/parted.8 b/doc/C/parted.8 +index 171269c..c852112 100644 +--- a/doc/C/parted.8 ++++ b/doc/C/parted.8 +@@ -54,7 +54,6 @@ Use optimum alignment as given by the disk topology information. This + aligns to a multiple of the physical block size in a way that guarantees + optimal performance. + .RE +- + .SH COMMANDS + .TP + .B [device] +@@ -62,8 +61,7 @@ The block device to be used. When none is given, \fBparted\fP will use the + first block device it finds. + .TP + .B [command [options]] +-Specifies the command to be executed. If no command is given, +-.BR parted ++Specifies the command to be executed. If no command is given, \fBparted\fP + will present a command prompt. Possible commands are: + .RS + .TP +@@ -119,8 +117,8 @@ or an LVM logical volume if necessary. + .B set \fIpartition\fP \fIflag\fP \fIstate\fP + Change the state of the \fIflag\fP on \fIpartition\fP to \fIstate\fP. + Supported flags are: "boot", "root", "swap", "hidden", "raid", "lvm", "lba", +-"legacy_boot", "irst", "msftres", "esp", "chromeos_kernel", "bls_boot", "linux-home", +-"no_automount", "bios_grub", and "palo". ++"legacy_boot", "irst", "msftres", "esp", "chromeos_kernel", "bls_boot", ++"linux-home", "no_automount", "bios_grub", and "palo". + \fIstate\fP should be either "on" or "off". + .TP + .B unit \fIunit\fP +@@ -140,10 +138,10 @@ On MS-DOS set the type aka. partition id of \fIpartition\fP to + the type-uuid of \fIpartition\fP to \fIuuid\fP. + .TP + .B disk_set \fIflag\fP \fIstate\fP +-Change a \fIflag\fP on the disk to \fIstate\fP. A flag can be either "on" or "off". +-Some or all of these flags will be available, depending on what disk label you +-are using. Supported flags are: "pmbr_boot" on GPT to enable the boot flag on the +-GPT's protective MBR partition. ++Change a \fIflag\fP on the disk to \fIstate\fP. A flag can be either "on" or ++"off". Some or all of these flags will be available, depending on what disk ++abel you are using. Supported flags are: "pmbr_boot" on GPT to enable the ++boot flag on the GPT's protective MBR partition. + .TP + .B disk_toggle \fIflag\fP + Toggle the state of the disk \fIflag\fP. +@@ -155,24 +153,23 @@ Display version information and a copyright message. + \fBparted\fP will compute sensible ranges for the locations you specify when using + units like "GB", "MB", etc. Use the sector unit "s" or IEC binary units like + "GiB", "MiB", to specify exact locations. +- + When you specify start or end values using IEC binary units like "MiB", + "GiB", "TiB", etc., \fBparted\fP treats those values as exact, and equivalent to + the same number specified in bytes (i.e., with the "B" suffix), in that it + provides no helpful range of sloppiness. Contrast that with a partition + start request of "4GB", which may actually resolve to some sector up to 500MB +-before or after that point. Thus, when creating a partition in an exact location +-you should use units of bytes ("B"), sectors ("s"), or IEC binary units like +-"MiB", "GiB", but not "MB", "GB", etc. ++before or after that point. Thus, when creating a partition in an exact ++location you should use units of bytes ("B"), sectors ("s"), or IEC binary units ++like "MiB", "GiB", but not "MB", "GB", etc. + .SH REPORTING BUGS + Report bugs to + .SH SEE ALSO + .BR fdisk (8), + .BR mkfs (8), + The \fIparted\fP program is fully documented in the +-.BR info(1) ++.BR info (1) + format +-.IR "GNU partitioning software" ++.I "GNU partitioning software" + manual. + .SH AUTHOR + This manual page was written by Timshel Knoll , +-- +2.49.0 + diff --git a/parted.spec b/parted.spec index c0203d1..31ea054 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 11%{?dist} +Release: 12%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -18,6 +18,10 @@ Patch0005: 0005-libparted-Fix-sun-disklabel-unhandled-exception.patch Patch0006: 0006-tests-Add-test-for-SUN-disklabel-handling.patch Patch0007: 0007-libparted-Fix-dvh-disklabel-unhandled-exception.patch Patch0008: 0008-tests-Add-test-for-dvh-with-a-bad-checksum.patch +Patch0009: 0009-tests-probing-ext4-without-journal-should-still-indi.patch +Patch0010: 0010-libparted-Do-not-detect-ext4-without-journal-as-ext2.patch +Patch0011: 0011-nilfs2-Fixed-possible-sigsegv-in-case-of-corrupted-s.patch +Patch0012: 0012-doc-Fix-some-groff-mandoc-linting-complaints.patch BuildRequires: gcc BuildRequires: e2fsprogs-devel @@ -122,6 +126,12 @@ make check %changelog +* Fri May 30 2025 Brian C. Lane - 3.6-12 +- doc: Fix some groff/mandoc linting complaints (bcl) +- nilfs2: Fixed possible sigsegv in case of corrupted superblock (abutenko) +- libparted: Do not detect ext4 without journal as ext2 (pascal) +- tests: probing ext4 without journal should still indicate ext4 (bcl) + * Fri Jan 17 2025 Fedora Release Engineering - 3.6-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 66c2ad5f018ccccbdaa60f883675cf6c0243aba7 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 24 Jul 2025 23:58:58 +0000 Subject: [PATCH 13/13] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- parted.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parted.spec b/parted.spec index 31ea054..7948ba4 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 3.6 -Release: 12%{?dist} +Release: 13%{?dist} License: GPL-3.0-or-later URL: http://www.gnu.org/software/parted @@ -126,6 +126,9 @@ make check %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 3.6-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Fri May 30 2025 Brian C. Lane - 3.6-12 - doc: Fix some groff/mandoc linting complaints (bcl) - nilfs2: Fixed possible sigsegv in case of corrupted superblock (abutenko)