From: Karel Zak Date: Thu, 11 Jan 2018 13:23:57 +0000 (+0100) Subject: libfdisk: (sun) fix n-1 bug and whole-disk X-Git-Tag: v2.32-rc1~102 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f7606d2d9f8f7fc28b6b5e6cb295d4104b3df69b;p=thirdparty%2Futil-linux.git libfdisk: (sun) fix n-1 bug and whole-disk * set whole_disk variable if SUN_TAG_WHOLEDISK specified * fix N-1 bug in add new partition according to template (script) Addresses: https://github.com/karelzak/util-linux/issues/555 Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/sun.c b/libfdisk/src/sun.c index 0be4d8df68..a247dbcf57 100644 --- a/libfdisk/src/sun.c +++ b/libfdisk/src/sun.c @@ -522,6 +522,9 @@ static int sun_add_partition( fetch_sun(cxt, starts, lens, &start, &stop); + if (pa && pa->type && pa->type->code == SUN_TAG_WHOLEDISK) + whole_disk = 1; + if (stop <= start) { if (n == 2) whole_disk = 1; @@ -629,8 +632,9 @@ static int sun_add_partition( /* last */ if (pa && pa->end_follow_default) last = whole_disk || (n == 2 && !first) ? stop2 : stop; + else if (pa && fdisk_partition_has_size(pa)) { - last = first + pa->size - 1ULL; + last = first + pa->size; if (!whole_disk && last > stop) return -ERANGE;