Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package util-linux for openSUSE:Factory 
checked in at 2026-02-14 21:37:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/util-linux (Old)
 and      /work/SRC/openSUSE:Factory/.util-linux.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "util-linux"

Sat Feb 14 21:37:05 2026 rev:304 rq:1332512 version:2.41.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/util-linux/util-linux.changes    2026-01-19 
18:35:02.710462038 +0100
+++ /work/SRC/openSUSE:Factory/.util-linux.new.1977/util-linux.changes  
2026-02-14 21:37:54.086090890 +0100
@@ -1,0 +2,9 @@
+Tue Feb 10 20:43:03 UTC 2026 - Martin Schreiner <[email protected]>
+
+- Fix bsc#1222465.
+- Add patch:
+  * util-linux-bsc-1222465.patch
+- Patch has already been merged upstream,
+  and may be deleted during the next release.
+
+-------------------------------------------------------------------

New:
----
  util-linux-bsc-1222465.patch

----------(New B)----------
  New:- Add patch:
  * util-linux-bsc-1222465.patch
- Patch has already been merged upstream,
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ util-linux.spec ++++++
--- /var/tmp/diff_new_pack.2I8Ghp/_old  2026-02-14 21:37:55.654155525 +0100
+++ /var/tmp/diff_new_pack.2I8Ghp/_new  2026-02-14 21:37:55.658155690 +0100
@@ -143,6 +143,8 @@
 Patch20:        util-linux-agetty-escape-erase.patch
 # PATCH-FIX-BUILD util-linux-man-generated.patch [email protected] -- Update 
generated man pages modified by patches.
 Patch21:        util-linux-man-generated.patch
+# PATCH-FIX-OPENSUSE bsc#1222465: fdisk creates broken partition table
+Patch22:        util-linux-bsc-1222465.patch
 BuildRequires:  audit-devel
 BuildRequires:  bc
 BuildRequires:  binutils-devel


++++++ util-linux-bsc-1222465.patch ++++++
>From 8b8da020f57414c90981371da71fdf32d2253ac7 Mon Sep 17 00:00:00 2001
From: Martin Jungblut Schreiner <[email protected]>
Date: Mon, 29 Dec 2025 19:52:56 -0300
Subject: [PATCH 1/2] libfdisk: (dos) fix logical partition start
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

fdisk could accept adjacent logical partitions, causing the EBR for the new
logical partition to be written inside the previous partition’s data area.
This can corrupt the EBR chain.

Fix free-sector search to keep an EBR gap (first_lba) after logical partitions.
---
 libfdisk/src/dos.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/libfdisk/src/dos.c b/libfdisk/src/dos.c
index c88d2a4f213..f85104b2828 100644
--- a/libfdisk/src/dos.c
+++ b/libfdisk/src/dos.c
@@ -1201,6 +1201,21 @@ static int find_first_free_sector_in_range(
                                p_start -= cxt->first_lba;
                        if (first < p_start)
                                continue;
+
+                       /* if we're placing a logical partition start, ensure
+                       there's room for the *next* EBR (stored at start - 
first_lba).
+                       therefore enforce:
+                       start(Lnew) >= end(Lprev) + first_lba + 1 */
+                       if (logical && first > p_end && (first - p_end) <= 
cxt->first_lba) {
+                               first = p_end + 1 + cxt->first_lba;
+                               first_moved = 1;
+
+                               if (first > end)
+                                       return -ENOSPC;
+
+                               continue;
+                       }
+
                        if (first <= p_end) {
                                first = p_end + 1 + (logical ? cxt->first_lba : 
0);
                                first_moved = 1;

>From bf3d4aeec708fae7aa30530a1bf42ee1d35366f8 Mon Sep 17 00:00:00 2001
From: Martin Jungblut Schreiner <[email protected]>
Date: Mon, 29 Dec 2025 20:46:39 -0300
Subject: [PATCH 2/2] tests: fdisk: add regression test for missing EBR gap
 between logical partitions

Add a DOS/MBR test case where the first logical partition starts at 6145
(extended start 2048). In the regressed behaviour fdisk allows the next
logical partition to start at prev_end+1, which would place its EBR
(start - 2048) inside the previous logical partition.

The expected behaviour is to require the next starting sector to be at least
prev_end + 2048 + 1 (e.g. 790528 in the testcase).

Closes issue #3925.
---
 tests/expected/fdisk/mbr-logical-ebr-gap | 15 ++++++++++
 tests/ts/fdisk/mbr-logical-ebr-gap       | 35 ++++++++++++++++++++++++
 2 files changed, 50 insertions(+)
 create mode 100644 tests/expected/fdisk/mbr-logical-ebr-gap
 create mode 100755 tests/ts/fdisk/mbr-logical-ebr-gap

diff --git a/tests/expected/fdisk/mbr-logical-ebr-gap 
b/tests/expected/fdisk/mbr-logical-ebr-gap
new file mode 100644
index 00000000000..c25b9be7a8d
--- /dev/null
+++ b/tests/expected/fdisk/mbr-logical-ebr-gap
@@ -0,0 +1,15 @@
+
+---layout----------
+Disk <removed>: 1 GiB, 1073741824 bytes, 2097152 sectors
+Units: sectors of 1 * 512 = 512 bytes
+Sector size (logical/physical): 512 bytes / 512 bytes
+I/O size (minimum/optimal): 512 bytes / <removed> bytes
+Disklabel type: dos
+Disk identifier: <removed>
+
+Device     Boot   Start     End Sectors Id Type     Start-C/H/S End-C/H/S Attrs
+<removed>1         2048 2097151 2095104  5 Extended     0/32/33 130/138/8 
+<removed>5         6145  788479  782335 83 Linux        0/97/35  49/20/35 
+<removed>6      2097151 2097151       1 83 Linux      130/138/8 130/138/8 
+-------------------
+
diff --git a/tests/ts/fdisk/mbr-logical-ebr-gap 
b/tests/ts/fdisk/mbr-logical-ebr-gap
new file mode 100755
index 00000000000..ffc9f96bc31
--- /dev/null
+++ b/tests/ts/fdisk/mbr-logical-ebr-gap
@@ -0,0 +1,35 @@
+#!/bin/bash
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="MBR: default start for logical must reserve EBR gap"
+. "$TS_TOPDIR"/functions.sh
+ts_init "$*"
+ts_check_test_command "$TS_CMD_FDISK"
+
+# 1GiB image => 2097152 sectors @ 512B
+TEST_IMAGE_NAME=$(ts_image_init 1024)
+
+# key assertion is in the resulting layout: L2 must not start at 788480,
+# but at 790528 (= 788480 + 2048), leaving room for the EBR.
+echo -e \
+"o
+n
+e
+1
+2048
+2097151
+n
+6145
+788479
+n
+788480
+2097151
+w
+q
+" | $TS_CMD_FDISK --noauto-pt "$TEST_IMAGE_NAME" &> /dev/null
+
+echo -ne "\n---layout----------\n" >> "$TS_OUTPUT"
+$TS_CMD_FDISK -x "$TEST_IMAGE_NAME" >> "$TS_OUTPUT"
+echo -ne "-------------------\n\n" >> "$TS_OUTPUT"
+ts_fdisk_clean "$TEST_IMAGE_NAME"
+
+ts_finalize

Reply via email to