lib/part: Ensure that the sect_count variable is not -1 before computing part_size
diff --git a/common/lib/part.s2.c b/common/lib/part.s2.c
index 79908160..f594ec98 100644
--- a/common/lib/part.s2.c
+++ b/common/lib/part.s2.c
@@ -74,12 +74,14 @@ bool volume_read(struct volume *volume, void *buffer, uint64_t loc, uint64_t cou
panic(false, "Attempted volume_read() on pxe");
}
- uint64_t part_size;
- if (__builtin_mul_overflow(volume->sect_count, volume->sector_size, &part_size)) {
- return false;
- }
- if (loc >= part_size || count > part_size - loc) {
- return false;
+ if (volume->sect_count != (uint64_t)-1) {
+ uint64_t part_size;
+ if (__builtin_mul_overflow(volume->sect_count, volume->sector_size, &part_size)) {
+ return false;
+ }
+ if (loc >= part_size || count > part_size - loc) {
+ return false;
+ }
}
uint64_t block_size;
