From: Thomas Weißschuh Date: Tue, 14 Nov 2023 16:53:29 +0000 (+0100) Subject: cfdisk: properly handle out-of-order partitions during resize X-Git-Tag: v2.40-rc1~157^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=78fd7300140c5e2f4e210aa1163468ef83b9c2fe;p=thirdparty%2Futil-linux.git cfdisk: properly handle out-of-order partitions during resize Fixes #2580 Signed-off-by: Thomas Weißschuh --- 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;