| ... | ... | @@ -868,7 +868,8 @@ const Msf = struct { |
| 868 | 868 | return error.InvalidDebugInfo; |
| 869 | 869 | if (superblock.FreeBlockMapBlock != 1 and superblock.FreeBlockMapBlock != 2) |
| 870 | 870 | return error.InvalidDebugInfo; |
| 871 | | if (superblock.NumBlocks * superblock.BlockSize != try file.getEndPos()) |
| 871 | const file_len = try file.getEndPos(); |
| 872 | if (superblock.NumBlocks * superblock.BlockSize != file_len) |
| 872 | 873 | return error.InvalidDebugInfo; |
| 873 | 874 | switch (superblock.BlockSize) { |
| 874 | 875 | // llvm only supports 4096 but we can handle any of these values |
| ... | ... | @@ -919,7 +920,7 @@ const Msf = struct { |
| 919 | 920 | const block_id = try directory.reader().readIntLittle(u32); |
| 920 | 921 | const n = (block_id % superblock.BlockSize); |
| 921 | 922 | // 0 is for SuperBlock, 1 and 2 for FPMs. |
| 922 | | if (block_id == 0 or n == 1 or n == 2 or block_id * superblock.BlockSize > try file.getEndPos()) |
| 923 | if (block_id == 0 or n == 1 or n == 2 or block_id * superblock.BlockSize > file_len) |
| 923 | 924 | return error.InvalidBlockIndex; |
| 924 | 925 | blocks[j] = block_id; |
| 925 | 926 | } |