From 7c287748a4f7dcb48bb6b68dccf5ceda0ee909bf Mon Sep 17 00:00:00 2001 From: Vojtech Trefny Date: Mon, 23 Mar 2026 15:14:53 +0100 Subject: [PATCH] part: Check whether partition exists before setting GPT attributes Resolves: RHEL-143353 --- ...exists-before-setting-GPT-attributes.patch | 46 +++++++++++++++++++ libblockdev.spec | 7 ++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 0002-part-Check-whether-partition-exists-before-setting-GPT-attributes.patch diff --git a/0002-part-Check-whether-partition-exists-before-setting-GPT-attributes.patch b/0002-part-Check-whether-partition-exists-before-setting-GPT-attributes.patch new file mode 100644 index 0000000..ecda1b0 --- /dev/null +++ b/0002-part-Check-whether-partition-exists-before-setting-GPT-attributes.patch @@ -0,0 +1,46 @@ +From 168e3cea4c9d9ef3b858b5862b323900e0344c46 Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Thu, 19 Feb 2026 16:23:20 +0100 +Subject: [PATCH] part: Check whether partition exists before setting GPT + attributes + +Other "set" functions already have this check. + +Resolves: RHEL-143353 +--- + src/plugins/part.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/src/plugins/part.c b/src/plugins/part.c +index 35ac5c09f..26e580638 100644 +--- a/src/plugins/part.c ++++ b/src/plugins/part.c +@@ -2208,6 +2208,7 @@ gboolean bd_part_set_part_bootable (const gchar *disk, const gchar *part, gboole + */ + gboolean bd_part_set_part_attributes (const gchar *disk, const gchar *part, guint64 attrs, GError **error) { + struct fdisk_context *cxt = NULL; ++ struct fdisk_partition *pa = NULL; + gint part_num = 0; + gint ret = 0; + +@@ -2222,10 +2223,20 @@ gboolean bd_part_set_part_attributes (const gchar *disk, const gchar *part, guin + if (!cxt) + return FALSE; + ++ ret = fdisk_get_partition (cxt, part_num, &pa); ++ if (ret != 0) { ++ g_set_error (error, BD_PART_ERROR, BD_PART_ERROR_FAIL, ++ "Failed to get partition '%d' on device '%s'.", part_num, disk); ++ close_context (cxt); ++ return FALSE; ++ } ++ fdisk_unref_partition (pa); ++ + ret = fdisk_gpt_set_partition_attrs (cxt, part_num, attrs); + if (ret < 0) { + g_set_error (error, BD_PART_ERROR, BD_PART_ERROR_FAIL, + "Failed to set GPT attributes: %s", strerror_l (-ret, c_locale)); ++ close_context (cxt); + return FALSE; + } + diff --git a/libblockdev.spec b/libblockdev.spec index 9ef4cb1..fb12a2b 100644 --- a/libblockdev.spec +++ b/libblockdev.spec @@ -86,13 +86,14 @@ Name: libblockdev Version: 3.4.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A library for low-level manipulation with block devices License: LGPL-2.1-or-later URL: https://github.com/storaged-project/libblockdev Source0: https://github.com/storaged-project/libblockdev/releases/download/%{version}/%{name}-%{version}.tar.gz Patch0: 0001-lvm-dbus-Show-better-error-for-invalid-LVM-IDs.patch +Patch1: 0002-part-Check-whether-partition-exists-before-setting-GPT-attributes.patch BuildRequires: make BuildRequires: glib2-devel @@ -948,6 +949,10 @@ find %{buildroot} -type f -name "*.la" | xargs %{__rm} %files plugins-all %changelog +* Mon Mar 23 2026 Vojtech Trefny - 3.4.0-3 +- part: Check whether partition exists before setting GPT attributes + Resolves: RHEL-143353 + * Thu Oct 30 2025 Vojtech Trefny - 3.4.0-2 - lvm-dbus: Show better error for invalid LVM IDs Resolves: RHEL-123039