disk: Extend disk_blk_part_validate() with range checking

Check whether access is out of bounds of the partition and
return an error. This way there is no danger of esp. write
or erase outside of the confines of partition.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
This commit is contained in:
Marek Vasut 2023-08-14 01:46:45 +02:00 committed by Tom Rini
parent 2bc0dfef9f
commit bfd98b9a63

View file

@ -27,9 +27,17 @@
*/
static int disk_blk_part_validate(struct udevice *dev, lbaint_t start, lbaint_t blkcnt)
{
struct disk_part *part = dev_get_uclass_plat(dev);
if (device_get_uclass_id(dev) != UCLASS_PARTITION)
return -ENOSYS;
if (start >= part->gpt_part_info.size)
return -E2BIG;
if ((start + blkcnt) > part->gpt_part_info.size)
return -ERANGE;
return 0;
}