libblockdev/0002-part-Check-whether-partition-exists-before-setting-GPT-attributes.patch
2026-03-23 15:14:53 +01:00

47 lines
1.6 KiB
Diff

From 168e3cea4c9d9ef3b858b5862b323900e0344c46 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
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;
}