From 78fd7300140c5e2f4e210aa1163468ef83b9c2fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20Wei=C3=9Fschuh?= Date: Tue, 14 Nov 2023 17:53:29 +0100 Subject: [PATCH] cfdisk: properly handle out-of-order partitions during resize MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes #2580 Signed-off-by: Thomas Weißschuh --- disk-utils/cfdisk.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/disk-utils/cfdisk.c b/disk-utils/cfdisk.c index 9cf0346425..11b7faef75 100644 --- a/disk-utils/cfdisk.c +++ b/disk-utils/cfdisk.c @@ -2458,18 +2458,17 @@ static int main_menu_action(struct cfdisk *cf, int key) } case 'r': /* resize */ { - struct fdisk_partition *npa, *next; uint64_t size, max_size, secs; + struct fdisk_partition *npa; if (fdisk_partition_is_freespace(pa) || !fdisk_partition_has_start(pa)) return -EINVAL; - size = fdisk_partition_get_size(pa); - - /* is the next freespace? */ - next = fdisk_table_get_partition(cf->table, cf->lines_idx + 1); - if (next && fdisk_partition_is_freespace(next)) - size += fdisk_partition_get_size(next); + rc = fdisk_partition_get_max_size(cf->cxt, + fdisk_partition_get_partno(pa), + &size); + if (rc) + return rc; size *= fdisk_get_sector_size(cf->cxt); max_size = size; -- 2.47.3