libfdisk: make table-length usage more robust

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2016-05-18 14:15:02 +02:00
parent d96153f8c8
commit a67054f9be
2 changed files with 10 additions and 3 deletions

View File

@ -2503,6 +2503,8 @@ int fdisk_gpt_set_npartitions(struct fdisk_context *cxt, unsigned long new)
gpt = self_label(cxt);
old = le32_to_cpu(gpt->pheader->npartition_entries);
if (old == new)
return 0; /* do nothing, say nothing */
/* calculate the size (bytes) of the entries array */
new_size = new * le32_to_cpu(gpt->pheader->sizeof_partition_entry);

View File

@ -1346,10 +1346,15 @@ int fdisk_apply_script_headers(struct fdisk_context *cxt, struct fdisk_script *d
return rc;
str = fdisk_script_get_header(dp, "table-length");
if (str)
return fdisk_gpt_set_npartitions(cxt, strtoul(str, NULL, 0));
if (str) {
uintmax_t sz;
return 0;
rc = parse_size(str, &sz, NULL);
if (rc == 0)
rc = fdisk_gpt_set_npartitions(cxt, sz);
}
return rc;
}
/**