Permalink
Browse files
libfdisk: (gpt) add extra check for First/Last LBA
Signed-off-by: Karel Zak <kzak@redhat.com>
- Loading branch information...
Showing
with
18 additions
and
2 deletions.
-
+3
−2
disk-utils/sfdisk.c
-
+15
−0
libfdisk/src/gpt.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);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -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));
|
|
|
|
|
|
|
0 comments on commit
9d9a1b8