From bcb74a91b62b4d1ed52e5a0fd5a5ecfe6e7867a7 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. --- 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; }