:: commit 4515fa62dc049c2597926fddd06eb44629c48543

Mintsuki <mintsuki@protonmail.com> — 2025-12-27 19:58

parents: b63d24db1f

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;
tab: 248 wrap: offon