summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--disk-utils/sfdisk.c5
-rw-r--r--libfdisk/src/gpt.c15
2 files changed, 18 insertions, 2 deletions
diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
index 67fa1d18f..9daf98cc3 100644
--- a/disk-utils/sfdisk.c
+++ b/disk-utils/sfdisk.c
@@ -1216,7 +1216,8 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
if (!sf->quiet)
fputs(_("Checking that no-one is using this disk right now ..."), stdout);
if (is_device_used(sf)) {
- fputs(_(" FAILED\n\n"), stdout);
+ if (!sf->quiet)
+ fputs(_(" FAILED\n\n"), stdout);
fdisk_warnx(sf->cxt, _(
"This disk is currently in use - repartitioning is probably a bad idea.\n"
@@ -1225,7 +1226,7 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
if (!sf->force)
errx(EXIT_FAILURE, _("Use the --force flag to overrule all checks."));
- } else
+ } else if (!sf->quiet)
fputs(_(" OK\n\n"), stdout);
}
diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c
index fd49c1349..a7766da60 100644
--- a/libfdisk/src/gpt.c
+++ b/libfdisk/src/gpt.c
@@ -2182,6 +2182,21 @@ static int gpt_add_partition(
goto done;
}
+ /* Be paranoid and check agains on-disk setting rather than against libfdisk cxt */
+ if (user_l > le64_to_cpu(pheader->last_usable_lba)) {
+ fdisk_warnx(cxt, _("The last usable GPT sector is %ju, but %ju is requested."),
+ le64_to_cpu(pheader->last_usable_lba), user_l);
+ rc = -EINVAL;
+ goto done;
+ }
+
+ if (user_f < le64_to_cpu(pheader->first_usable_lba)) {
+ fdisk_warnx(cxt, _("The first usable GPT sector is %ju, but %ju is requested."),
+ le64_to_cpu(pheader->first_usable_lba), user_f);
+ rc = -EINVAL;
+ goto done;
+ }
+
assert(!FDISK_IS_UNDEF(user_l));
assert(!FDISK_IS_UNDEF(user_f));