47 lines
1.6 KiB
Diff
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;
|
|
}
|
|
|