disk: part_dos: Fix a NULL pointer error

When ext is NULL we cannot dereference it. Update the code flow to avoid
this, so that layout_mbr_partitions() can be used with partition tables
that do not include an extended partition.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2021-10-23 17:26:02 -06:00
parent 362a79f3e8
commit b7c2cc49ff

View File

@ -459,10 +459,12 @@ int layout_mbr_partitions(struct disk_partition *p, int count,
ext = &p[i];
}
if (i >= 4 && !ext) {
printf("%s: extended partition is needed for more than 4 partitions\n",
__func__);
return -1;
if (count < 4)
return 0;
if (!ext) {
log_err("extended partition is needed for more than 4 partitions\n");
return -EINVAL;
}
/* calculate extended volumes start and size if needed */